J'écris un modèle XSL qui extrait des données de nombreuses sources secondaires. Un exemple document secondaire ressemble à ceci:XSL: Ignorer/supprimer les espaces de noms dans les documents secondaires
<toplevel xmlns:foo1="http://foo1">
<path xmlns="http://foo1">
<mytag>bar</mytag>
</path>
</toplevel>
Dans le XSL, je fais ceci:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foo1="http://foo1"
exclude-result-prefixes="foo1">
<xsl:variable name="secondary1" select="document('secondary1.xml')/toplevel"/>
<foo>
<xsl:value-of select="$secondary1//foo1:path/foo1:mytag"/>
</foo>
</xsl:stylesheet>
Avec beaucoup de sources secondaires, dont chacun utilise un espace de noms différent, préfixer chaque balise est fastidieux, et que beaucoup de répétitions ne peuvent pas être la bonne chose à faire de toute façon. Est-il possible d'utiliser document() de telle sorte que l'espace de noms de l'ensemble de nœuds importé soit supprimé (ou pour obtenir le même effet d'une autre manière)?
Je présume que vous vouliez inclure une déclaration d'espace de noms par défaut dans le premier document: xmlns = "http: // foo1" Comme c'est le cas actuellement, les éléments ne sont pas dans un espace de noms. (Désolé pour l'espace supplémentaire dans l'URI d'espace de noms, je ne sais pas comment empêcher SO de le rendre comme un lien "foo1".) –
Désolé, et oui, c'est ce que je voulais dire. J'ai édité la question en conséquence. – knipknap