2 votes

Avec un espace de noms non par défaut en XML, chaque balise doit-elle avoir un préfixe ?

Je suis un débutant en XML. Je viens d'étudier les espaces de noms, et j'ai un peu de mal, donc ma question se trouve dans cet exemple,

<s:root xmlns:s="help.com">
  <h></h>
</s:root>

pouvons-nous avoir <h> sans le s: préfixe ?

Si oui, est-ce que <h> inclus dans le s: ou non ?

Je sais que c'est une question stupide, mais tout le monde commence par être stupide. Merci pour vos réponses.

3voto

kjhughes Points 5581

Votre question n'est pas du tout "idiote" - elle reflète en fait une compréhension émergente avancée.

"Devrait" XML

La réponse aux questions XML "devrait" se situe à deux niveaux : conformité de la forme y validité .

  1. Votre XML est en effet bien formé . Il suit toutes les règles pour XML. Il suit même toutes les règles pour être espace-nom bien formé . En vertu des règles de conformité XML, oui, vous pouvez avoir un h sans un élément s: préfixe. (Selon les règles de de l'espace de noms bien formé, vous pouvez aussi le faire - vous ne pouvez simplement pas avoir a d:h avec un élément non déclaré d préfixe d'espace de nom).

  2. Votre XML peut ou non être válido . En termes XML, pour être válido implique qu'il suit les règles données par un schéma (communément XSD ; moins couramment DTD, Relax NG, Schematron, ...). Selon les règles de validité données par un schéma XML, vous pouvez ou non avoir une h élément dans cette position - il faudrait disposer d'un schéma XML pour le savoir.

Espaces de noms XML

Pour votre XML,

<s:root xmlns:s="help.com">
  <h></h>
</s:root>
  • root est dans le help.com espace de noms.
  • h n'est dans aucun espace de nom.

Pour ce XML,

<root xmlns="help.com">
  <h></h>
</root>
  • root est dans le help.com espace de noms.
  • h est également dans le help.com car xmlns="help.com" déclare a Espace de noms par défaut qui s'applique à root et tous les éléments descendants sans déclaration d'espace de nom.

2voto

Michael Kay Points 52194

(a) Oui, votre exemple est bien formé.

(b) Le h n'est pas dans un espace de nom. Un élément sans préfixe se trouve dans un espace de noms uniquement s'il se trouve dans la portée d'une déclaration d'espace de noms par défaut ( xmlns="some-url" )

1voto

har07 Points 73742

Votre exemple XML est valide, donc oui, h l'élément peut être sans préfixe s: et cela signifie que h est dans un espace de nom vide, pas dans le même espace de nom que celui référencé par le préfixe s: . Les éléments descendants sans préfixe héritent implicitement de l'espace de nom par défaut, mais pas des espaces de nom préfixés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X