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

23

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, qu'est-ce qui devrait http://www.w3schools.com/furnituretenir?

Patryk
la source
7
Commentaire w3fools obligatoire .
yannis
Les espaces de noms XML doivent-ils donc être au format URI? Ou puis-je simplement utiliser une chaîne comme «My.Namespace.Foo»?
Mas

Réponses:

20

Un espace de noms 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 " Tout le monde elses genre de Foo".

La façon 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 cela n'est pas nécessaire. C'est juste pratique.


la source
D'accord, mais quelle est la différence entre l'espace de noms A et l'espace de noms w3.org/1999/xhtml ? les deux peuvent être utilisés par les utilisateurs sans qu'ils sachent qu'ils ont utilisé les mêmes espaces de noms.
Patryk
1
@Patryk, c'est pourquoi vous utilisez une URL sur laquelle vous avez le contrôle. L'URL de l'espace de noms xhtml est sous le contrôle du W3C qui a défini la spécification XHTML.
2
@Patryk, notez également que ce sont ceux qui définissent l'espace de noms qui choisissent l'URL. Ensuite, tout le monde peut les utiliser .
1
L'espace de noms aserait donc totalement valide? Stupide, mais valide? Ou faut-il que ce soit un URI?
Rudie
5
Cela n'aurait-il pas été génial si les premières personnes à utiliser cette convention il y a des années avaient également mis une documentation bien concise de leurs schémas sur ces URL, ce qui est devenu une chose? Les espaces de noms OpenXML de Microsoft schemas.openxmlformats.org/drawingml/2006/chart ne pointent à rien.
prototype
16

En termes généraux, tout identifiant unique servirait pour un espace de noms; mais comme il est censé être unique 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 ses spécifications, 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 une excellente idée.

Javier
la source
Merci pour la réponse mais j'aurais besoin de quelque chose de plus concret pour comprendre cela. J'ai ajouté un exemple de code sur lequel vous pouvez vous baser, veuillez jeter un œil.
Patryk
1
@patryk - rien, ce n'est pas une adresse - c'est juste un jeton unique que vous êtes sûr que personne d'autre ne peut mélanger avec des fichiers xml. Tout ce qu'il dit, c'est que les noms <table> etc ne seront pas utilisés avec des significations différentes dans les fichiers xml qui ont le nom www.w3.org en haut
Martin Beckett
Ok mais quand wikipedia dit quelque chose que les utilisateurs peuvent utiliser par exemple w3.org/1999/xhtml comme espace de noms, alors beaucoup de gens auront le même espace de noms. Ai-je raison ?
Patryk
@Patryk, uniquement si vous souhaitez l'utiliser pour le même usage. Si vous souhaitez définir un nouvel espace de noms, nous vous encourageons à utiliser votre propre domaine
Javier
@Javier Qu'entendez-vous par «la même utilisation»?
Patryk
1

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.

Qu'est-ce que xmlIns spécifie?
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 l' article sur Wikipédia. 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 connaissez-vous le document xml utilisé XML Schemapour la structure élément / table / classe des éléments du document XML.

que devrait contenir http://www.w3schools.com/furniture ?

La réponse se trouve sur votre page où vous avez découvert l'espace de noms XML. Consultez la Namespaces in Real Usesection sur cet article W3Schools .

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

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

Niranjan Singh
la source
-1

URI = nom ou identificateur global unique de l'espace de noms

Envisagez de constituer une base de données ou un document sur la gestion financière de la logistique de l'industrie pétrolière. Il faudrait pour cela utiliser des vocabulaires spécifiques (c'est-à-dire des termes contrôlés) pour chacun des sujets: base de données, document, gestion, finance, logistique, pétrole et industrie.

Si aucun des termes ne se chevauche dans ces sept vocabulaires, alors un seul URI est nécessaire. Mais pour chaque terme qui chevauche d'autres termes dans ces vocabulaires, vous auriez besoin d'un vocabulaire spécifique à un sujet supplémentaire identifié dans un URI ou IRI. Un moyen de contourner cela est de créer une taxonomie fusionnée, avec des termes généraux plus larges et des termes spécifiques à un sujet plus étroits.

Cela pourrait ensuite être développé en un thésaurus qui montre également les synonymes de jargon d'un terme, et permet de spécifier un terme préféré parmi ces synonymes de jargon.

Roy Roebuck
la source
2
ce post est assez difficile à lire (mur de texte). Pourriez-vous le modifier sous une meilleure forme?
moucher