XSL: évitez d'exporter des définitions d'espace de noms vers des documents XML résultants
Je voudrais prendre des données de certains fichiers XML et les transformer en un nouveau document XML. Cependant, je ne veux pas que la définition d'un espace de noms dans le XSLT se produise dans le document de résultat.
En d'autres termes:
Source:
<Namespace:Root xmlns:Namespace="http://www.something.com">
Feuille de style:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Namespace="http://www.something.com">
Résultat:
<resultRoot xmlns:Namespace="http://www.something.com">
<!--I don't want the Namespace definition above-->
J'utilise msxsl pour la transformation.
3 réponses
Vous pouvez utiliser l'attribut exclude-result-prefixes
de l'élément xsl:stylesheet
pour supprimer les espaces de noms du document de sortie:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Namespace="http://www.something.com"
exclude-result-prefixes="Namespace">
</xsl:stylesheet>
Pour supprimer plusieurs espaces de noms du document de sortie, spécifiez-les séparés par des espaces:
exclude-result-prefixes="ns1 ns2 ns3"
À partir de la spécification XSLT :
Lorsqu'une feuille de style utilise une déclaration d'espace de noms uniquement à des fins d'adressage de l'arborescence source, la spécification du préfixe dans l'attribut exclude-result-prefixes évitera un espace de noms superflu déclarations dans l'arborescence des résultats.
La réponse de Divo a déjà été choisie, et de manière appropriée.
Mais si vous êtes intéressé à creuser plus profondément, consultez la section "trop d'espaces de noms" dans mon opus magnum sur le sujet très populaire des "espaces de noms dans XSLT". (Oui, c'est censé être la langue dans la joue. :-) )
Utiliser l'extension-element-prefixes="espace de Noms"
Comme:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:datetime="http://exslt.org/dates-and-times"
xmlns:str="http://exslt.org/strings"
xmlns:exsl="http://exslt.org/common"
xmlns:uw="xalan://ru.sbtc.util.XSLUtil"
extension-element-prefixes="exsl str datetime uw"
version="1.0">