2010-04-07 5 views
2
<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="abc" targetNamespace="http://schemas.businessNameHere.com/SoftwareNameHere" 
      elementFormDefault="qualified" 
      xmlns="http://schemas.businessNameHere.com/SoftwareNameHere" 
      xmlns:mstns="http://schemas.businessNameHere.com/SoftwareNameHere" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="..." type="..." /> 
<xs:complexType name="..."> 

Je travaille sur un projet utilisant XSD pour générer un fichier .cs. Ma question concerne la chaîne "http://schemas.businessNameHere.com/SoftwareNameHere" Si je la change, cela ne fonctionne pas. Mais le http: // n'est pas valide ... quelle est la logique derrière et où puis-je savoir ce qu'il faut y mettre ou comment le changer?fichier XSD, où obtenir l'argument xmlns?

Répondre

11

Les espaces de noms XSD ne doivent pas forcément être des URI valides. Avoir une chaîne d'espace de noms qui est une URL ne signifie pas que quelque chose est récupéré de l'URL, ou quelque chose à voir avec le web - c'est simplement une chaîne comme les autres. Donc bien que l'URL puisse être invalide du fait qu'elle ne pointe à rien, c'est toujours une chaîne valide en tant que déclaration d'espace de noms.

Vous pouvez lire sur certains des reasoning behind namespace identifiers being in this format here. Il existe plusieurs raisons d'utiliser les URL comme identificateur d'espace de nom, mais principalement pour des raisons de commodité - c'est un identifiant unique qui a généralement un sens pour les utilisateurs, un peu comme la façon dont les espaces de noms Java commencent classiquement. "," org "ou" net ". Pour la nitty gritty de pourquoi les espaces de noms sont en format URI (techniquement, IRI), vous pouvez lire le W3C's standards for XML namespaces. Spécifiez que les espaces de noms XML sont au format IRI (International Resource Identifier), défini dans RFC3986.

Pour plus d'informations sur l'utilisation correcte des espaces de noms, il existe de nombreuses procédures pas à pas, like this one. Qu'est-ce qui ne fonctionne pas lorsque vous modifiez l'espace de noms?

+0

Vous avez probablement une faute de frappe là - "les espaces de noms ne doivent pas être des URI valides". URL moyennes? – xcut

+0

@xcut: les espaces de noms sont des URI, qui incluent des URL. –

+3

Je suis tout à fait conscient de cela. C'est pourquoi il est faux de dire que les identifiants d'espace de noms ne doivent pas nécessairement être des URI valides. Ils le font, ils ne doivent pas être des URL résolvables. – xcut

2

L'espace de noms n'a pas de signification sémantique au-delà de devoir être unique. Les gens utilisent normalement un formulaire URI, car cela peut pointer vers la documentation, mais ce n'est pas une exigence.

Dans ce cas, il s'agit de l'espace de nom par défaut et il est possible que l'application que vous utilisez pour générer vos fichiers .cs soit codée en dur pour l'utiliser.

Dans une application bien écrite, rien ne devrait casser si vous changez simplement une chaîne d'espace de noms.

2
xmlns="http://schemas.businessNameHere.com/SoftwareNameHere" 

C'est pas une URL valide où un document doit exister - il est seulement une chaîne qui représente un espace de noms XML (comme un espace de noms dans votre application C# appelé System.Data ou autre).

Vous pouvez facilement changer cette chaîne - il n'y a rien être référencé ici. (mais c'est une idée fausse commune)

Les gens utilisent souvent la syntaxe URL car le domaine enregistré pour vous/votre entreprise est garanti unique au monde -> ainsi l'espace de noms XML que vous en détiendrez sera également unique au monde.

Questions connexes