web-dev-qa-db-fra.com

Pourquoi avons-nous besoin d'URI pour les espaces de noms XML?

J'essaie de comprendre pourquoi nous avons besoin d'URI pour les espaces de noms XML et je ne trouve pas de raison pour cela. Quelqu'un peut-il m'éclairer un peu en montrant leur utilisation sur un exemple concret?

MODIFIER:

Ok donc par exemple: j'ai ceci de w3schools

<root
xmlns:h="http://www.w3.org/TR/html4/"
 xmlns:f="http://www.w3schools.com/furniture">

 <h:table>
   <h:tr>
     <h:td>Apples</h:td>
     <h:td>Bananas</h:td>
   </h:tr>
 </h:table>

 <f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
 </f:table>

 </root>

Alors, que devrait http://www.w3schools.com/furniture tenir ?

23
Patryk

Un namespace est une façon de dire "Ce genre de Foo" est différent de "Ce genre de Foo", même s'ils sont orthographiés de la même manière. Ou, si vous préférez " MON genre de Foo" est différent de "Everybody elses genre de Foo".

La manière technique de dire ceci est "L'URI de mon espace de noms pour Foo" est différent de tout le monde URI pour leur espace de noms pour Foo. En d'autres termes, les URI ne sont que des chaînes qui vous permettent de le dire.

L'astuce consiste alors à dire "Hé, les URL sont des URI valides", puis à utiliser un URI correspondant à une URL sous votre contrôle. Si tout le monde le fait, vous évitez les collisions accidentelles dans l'espace de noms. Vous pourriez aussi bien avoir dit espace de noms "A" et espace de noms "B", mais vous risquez que quelqu'un d'autre utilise également le même espace de noms, puis votre type de Foo n'est plus différent de leur Foo, ce qui est exactement ce que vous voulez éviter .

Vous pouvez ensuite ajouter une convention supplémentaire aux URL utilisées comme URI, par exemple que l'URL doit correspondre à une page contenant de la documentation ou des XSD ou similaires, mais ce n'est pas nécessaire. C'est juste pratique.

20
user1249

En termes généraux, tout identifiant unique servirait pour un espace de noms; mais comme il est censé être nique au monde, la norme devrait soit mandater une autorité d'arbitrage, soit utiliser une autre ressource qui est à la fois unique au monde mais facile à saisir et à prouver qu'elle est la vôtre.

Oh regarde! si vous avez un domaine, ce n'est évidemment que le vôtre, et il est facile de prouver qu'il vous appartient!

Par exemple, ils voulaient éviter la situation où deux librairies différentes commencent à utiliser des "livres" comme espace de noms, avec des définitions internes totalement différentes. Bien qu'ils l'utilisent en interne, il n'y a aucun problème; mais dès que l'un d'eux veut publier sa spécification, tout l'enfer se déchaîne.

Au lieu de cela, si vous êtes encouragé à utiliser votre domaine, n'importe qui (enfin, toute personne qui possède un domaine) peut définir son propre espace de noms privé avec la certitude que personne d'autre n'utilisera exactement le même identifiant.

En prime, vous pouvez éventuellement stocker la définition de votre espace de noms à l'URI, ce qui le rend auto-documenté.

Cela me semble être une excellente idée.

16
Javier

DOM niveau 2 a été publié fin 2000. Il a introduit la fonction "getElementById" ainsi qu'un modèle d'événement et la prise en charge des espaces de noms XML et CSS.

Que spécifie xmlIns?
En tant que nœuds d'attribut nommés "xmlns" ou "xmlns: xxx", exactement comme les espaces de noms sont écrits dans le document XML source. C'est le modèle présenté par DOM.

Que contient l'URI?
Un espace de noms XML est déclaré à l'aide du pseudo-attribut XML réservé xmlns ou xmlns: prefix, dont la valeur doit être un nom d'espace de noms valide.

Par exemple, la déclaration suivante mappe le préfixe "xhtml:" à l'espace de noms XHTML:

xmlns: xhtml = "http://www.w3.org/1999/xhtml"

COMME je l'ai découvert après avoir lu le article sur Wikipedia. L'URI contient les spécifications au format XML de l'espace de noms et fournit une méthode pour éviter les conflits de nom d'élément.

Peut-être savez-vous que le document xml utilise XML Schema pour la structure élément/table/classe des éléments du document XML.

ce qui devrait http://www.w3schools.com/furniture tenir?

La réponse se trouve sur votre page où vous avez découvert l'espace de noms XML. Vérifier Namespaces in Real Use section sur ce W3Schools article .

Vérifiez le lien suivant de stackoverflow qui montre ce que cet URI porte:

Comment créer et utiliser un espace de noms XML?

1
Niranjan Singh