Etendue des namespaces XML - XML/XSL - Programmation
Marsh Posté le 24-01-2008 à 13:34:49
Normalement, pour le premier code :
Code :
|
a et b ne sont pas dans le namespace ns1, vu qu'il faut préfixer le nom de l'élément par ns1 pour qu'ils soient dans le namespace. Ils seront dans un namespace nul, sans valeur, vu qu'il n'y a pas de namespace par défaut.
Le namespace par défaut est déclaré par un xmlns sans préfixe :
Code :
|
Là <tagada> n'est pas préfixé, mais comme y'a un namespace par défaut, il appartiendra à ce namespace par défaut.
Marsh Posté le 24-01-2008 à 14:36:39
Merci.
En fait, le truc que je trouve le plus étrange (mais peut-être que je ne vois pas toute la beauté de la chose) c'est que les descendants d'un élément namespacé explicitement avec un prefix ne font pas partie du même namespace de cet élément. J'en prend pour exemple ta réponse ainsi que Namespace Scoping.
De même, les attributs doivent toujours être préfixés (même si l'élément auquel ils appartiennent est préfixé et qu'il existe un namespace par défaut), sans quoi ils ne feront partie d'aucun namespace. Uniqueness of Attributes.
En fait, à tête reposée, ça colle avec ce que j'ai pu lire ici et là...
En tous cas merci !
Marsh Posté le 24-01-2008 à 14:50:39
Seyev a écrit : En fait, le truc que je trouve le plus étrange (mais peut-être que je ne vois pas toute la beauté de la chose) c'est que les descendants d'un élément namespacé explicitement avec un prefix ne font pas partie du même namespace de cet élément. |
Au contraire, ça permet d'avoir des descendants appartenant au namespace par défaut. Sinon soit ce serait impossible. Soit faudrais un préfixe genre #default ou je sais pas quoi.
Marsh Posté le 24-01-2008 à 15:08:42
Mouais. C'est vrai qu'il existe la possibilité du xmlns="..." pour que les descendants appartiennent au même namespace. D'un autre coté, on aurait toujours pu y revenir avec un xmlns=""...
Marsh Posté le 24-01-2008 à 15:35:36
Seyev a écrit : Merci. |
ben non, sinon c'est la merde pour mixer les préfixes quand on en a un par défaut.
Par contre, il est possible de déclarer un namespace par défaut sur n'importe quel élément, et dans ce cas ça s'applique à tous les descendants.
Seyev a écrit : De même, les attributs doivent toujours être préfixés (même si l'élément auquel ils appartiennent est préfixé et qu'il existe un namespace par défaut), sans quoi ils ne feront partie d'aucun namespace. Uniqueness of Attributes. |
Ouaip, sinon il devient impossible d'utiliser des attributs avec un namespace vide ({}), c'est à dire:
Marsh Posté le 24-01-2008 à 02:12:04
Salut à tous,
Si quelqu'un pouvait me donner un éclaircissement au sujet de l'étendue des namespaces XML, je l'en remercie d'avance. Plus précisément, je me demande :
<?xml version="1.0" encoding="UTF-8" ?>
<ns1:root xmlns:ns1="http://www.domain.com/NS1">
<a attr="attr">
<b/>
</a>
</ns1:root>
L'élément a, son attribut attr et l'élément b font partie du namespace http://www.domain.com/NS1 ?
--------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<ns2:root xmlns:ns1="http://www.domain.com/NS1" xmlns:ns2="http://www.domain.com/NS2">
<ns1:a attr="attr">
<b/>
</ns1:a>
</ns2:root>
L'attribut attr de a ainsi que l'élément b font partie du namespace http://www.domain.com/NS1 ?
--------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<ns2:root xmlns="http://www.domain.com/NS0" xmlns:ns1="http://www.domain.com/NS1" xmlns:ns2="http://www.domain.com/NS2">
<c/>
<ns1:a attr="attr">
<b/>
</ns1:a>
</ns2:root>
Ici, aucun élément ne fait partie du namespace http://www.domain.com/NS0 ?
L'élément c fait partie du namespace http://www.domain.com/NS2 ?
L'élément a et son attribut attr ainsi que l'élément b font bien partie de namespace http://www.domain.com/NS1 ?
--------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns="http://www.domain.com/NS0" xmlns:ns1="http://www.domain.com/NS1" xmlns:ns2="http://www.domain.com/NS2">
<c/>
<ns1:a attr="attr">
<ns2:b>
<d attr="attr"/>
</ns2:b>
</ns1:a>
</root>
Les éléments root et c font partie du namespace http://www.domain.com/NS0 ?
L'élément a et son attribut attr font partie du namespace http://www.domain.com/NS1 ?
Les éléments b et d ainsi que son attribut attr font partie du namespace http://www.domain.com/NS2 ?
--------------------------------------------------
Merci d'avance pour vos lumières !