2013-06-20 23 views
17

Na przykład, chcę dodać atrybut do tego węzła:Jak ustawić atrybut w XML za pomocą XSLT?

<Party> 

Tak będzie wyglądać następująco:

<Party role="this should be set using XPath"> 

wartość atrybutu musi pochodzić z XPath.

Poniższa nie zadziała :)

<Party role=<xsl:value-of select="some/xpath/path"/>> 

Jak to zrobić?

Odpowiedz

29

Atrybuty dosłownych elementów wynikowych obsługuje atrybutu szablon wartość składni, korzystając {}:

<Party role="{some/xpath/path}"> 
10
<xsl:template match="Party"> 
    <Party role="{some/xpath/path}"> 
    <xsl:apply-templates select="@* | node()"/> 
    </Party> 
</xsl:template> 

powinien robić. Jako alternatywny

<xsl:template match="Party"> 
    <xsl:copy> 
    <xsl:attribute name="role" select="some/xpath/path"/> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 

oczywiście apply-templates jest konieczne tylko, jeśli istnieją atrybutów i/lub węzły potomne również chcesz być przetwarzane (na przykład w celu skopiowania przez szablon transformacji tożsamości).

2

można spróbować poniżej próbki:

<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> 

Oto jestem ustawiania rolę atrybutów do węzła XML Strony.

Powiązane problemy