Par exemple, je veux ajouter un attribut à ce nœud:
<Party>
Cela ressemblera donc à:
<Party role="this should be set using XPath">
La valeur d'attribut doit provenir de XPath.
Ce qui suit ne fonctionnera pas :)
<Party role=<xsl:value-of select="some/xpath/path"/>>
Comment faire ça?
Les attributs des éléments de résultat littéraux prennent en charge la syntaxe modèle de valeur d'attribut, en utilisant {}
:
<Party role="{some/xpath/path}">
<xsl:template match="Party">
<Party role="{some/xpath/path}">
<xsl:apply-templates select="@* | node()"/>
</Party>
</xsl:template>
devrait faire. Comme alternative
<xsl:template match="Party">
<xsl:copy>
<xsl:attribute name="role" select="some/xpath/path"/>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
Bien sûr, les modèles d'application ne sont nécessaires que s'il existe des nœuds d'attribut et/ou enfants que vous souhaitez également traiter (par exemple, être copiés par un modèle de transformation d'identité).
vous pouvez essayer l'exemple ci-dessous:
<xsl:for-each select="YOUR_SELECT_PATH">
<a>
<Party> <xsl:attribute name="role"><xsl:value-of select="@source"/></xsl:attribute> </Party>
<xsl:value-of select="."/>
</a>
</xsl:for-each>
Ici, je configure le rôle d'attribut sur une partie de nœud xml.