web-dev-qa-db-fra.com

Comment définir un attribut en XML à l'aide de XSLT?

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?

24
VextoR

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}">
38
Ian Roberts
<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é).

11
Martin Honnen

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.

6
Shanjee