J'ai une question probablement idiote mais je maîtrise mal le "dossier XML". Pourquoi est-on obligés de répéter les préfixes xsl: ou xsd dans les feuilles et schémas ?

Je crois avoir compris le principe des espaces de noms, pour moi, ça serait plus logique de le déclarer sur la racine et puis basta ...

Merci d'avance.
Modifié par lyustcl (30 Aug 2006 - 02:09)
Bonjour,

lyustcl a écrit :
Pourquoi est-on obligés de répéter les préfixes xsl: ou xsd dans les feuilles et schémas ?
Il n'y a pas d'obligation de cet ordre. Ne pas mettre de préfixe signifie simplement : appartient à l'espace de noms par défaut. Si l'espace de noms par défaut convient, c'est parfait.
lyustcl a écrit :

Je crois avoir compris le principe des espaces de noms, pour moi, ça serait plus logique de le déclarer sur la racine et puis basta ...
Permets moi un doute : compte tenu de ta formulation, je ne suis pas certain que tu aies parfaitement compris.

Ce qui se propage de parent à enfants, ce sont les déclarations d'espaces de noms, et non pas l'espace de noms auquel un élément appartient. Les déclarations d'espaces de noms peuvent être multiples sur un élément, sont techniquement des noeuds enfants de l'élément, et ne définissent finalement pas l'unique espace de noms auquel appartient l'élément.
J'avais peur de mal m'exprimer. Plutôt que de dire des bêtises, je vais montrer un exemple de code, c'est le début d'un feuille de style. Est-ce que c'est envisageable ?
<?xml version="1.0" encoding="ISO-8859-1"?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<template match="/">
</stylesheet>


(J'ai du mal à tout bien comprendre dans ce que tu m'as gentillement expliqué. Ici, il n'y a qu'un espace de nom défini sur la racine, pour moi, la déclaration pourrait être répétée ainsi :

<?xml version="1.0" encoding="ISO-8859-1"?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<template xmlns="http://www.w3.org/1999/XSL/Transform" match="/">
</stylesheet>


Sauf que c'est "automatique" ici. Donc pourquoi mettre des préfixes ?
lyustcl a écrit :
Est-ce que c'est envisageable ?
<?xml version="1.0" encoding="ISO-8859-1"?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<template match="/">
</stylesheet>
Oui c'est correcte.


lyustcl a écrit :
<?xml version="1.0" encoding="ISO-8859-1"?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<template xmlns="http://www.w3.org/1999/XSL/Transform" match="/">
</stylesheet>
C'est correcte également même si, comme tu l'as compris, la seconde déclaration de l'espaces de noms par défaut n'est pas utile.

lyustcl a écrit :
pourquoi mettre des préfixes ?
C'est en général plus clair et plus pratique. Une feuille de style XSLT doit souvent manipuler d'autres catégories d'éléments dans l'arbre source et dans la feuille XSLT elle-même (éléments XHTML, MathML, propriétaires...), et utiliser l'espace de noms par défaut pour l'espace de noms XSLT est peu pratique ou périlleux.
L'explication est en effet toute simple, je regrette qu'elle ne me soit pas venue à l'esprit plus tôt. Merci beaucoup Smiley cligne