je peux le faire fonctionner en ajoutant un préfixe à l'espace de noms par défaut (le dernier), mais comment pourrais-je sortir un XML sans ajouter un préfixe, il est possible en utilisant XslCompiledTransform dans. NET 4?
Voici un exemple concret comment faire:
Cette transformation:
<xsl:stylesheet version="1.0"
xmlns="http://workflow.converga.com.au/compass"
xmlns:c="http://workflow.converga.com.au/compass"
xmlns:ext="http://exslt.org/common"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="c ext xsl">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pnewItem">
<item name="wine">
<price>3</price>
<quantity>5000</quantity>
</item>
</xsl:param>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="c:item[last()]">
<xsl:call-template name="identity"/>
<xsl:copy-of select="ext:node-set($pnewItem)/*"/>
</xsl:template>
</xsl:stylesheet>
lorsqu'il est appliqué avec XslCompiledTransform sur le document XML suivant:
<pExport xmlns="http://workflow.converga.com.au/compass">
<Goods>
<item name="tobacco">
<price>5</price>
<quantity>1000</quantity>
</item>
</Goods>
</pExport>
produit le voulait (le même document XML avec un nouvel élément ajouté), résultat correct:
<pExport xmlns="http://workflow.converga.com.au/compass">
<Goods>
<item name="tobacco">
<price>5</price>
<quantity>1000</quantity>
</item>
<item name="wine">
<price>3</price>
<quantity>5000</quantity>
</item>
</Goods>
</pExport>
Vous semblez dire que vous ne pouvez * pas * trouver un moyen de le faire fonctionner avec l'espace de noms par défaut sans ajouter de préfixe au fichier XML de sortie. En quoi cela ne fonctionne-t-il pas? Quel est le comportement observé lorsque vous n'ajoutez pas de préfixe? Vous avez étiqueté ceci avec XSLT, alors peut-être voulez-vous dire qu'un processeur XSLT ne reconnaît pas l'élément pExport dans l'espace de noms workflow/compass? Plus d'informations sont nécessaires. Cela pourrait aider à montrer la partie pertinente de votre feuille de style. – LarsH
Bonne question (+1).Voir ma réponse pour un exemple concret et la solution utilisée. –
LarsH, oui ce que je voulais dire, c'est que sans ajouter de préfixe, la sortie XSLT ne serait pas capable de faire correspondre les nœuds avec l'espace de nom par défaut (sans tag). Je cherche un moyen de faire correspondre ces éléments sans ajouter mon propre préfixe pour l'espace de noms par défaut. –