2013-06-20 17 views
17

は例えば、私は、このノードに属性を追加する:XSLTを使用してXMLの属性を設定する方法は?

<Party> 

ようなので、それはなります:属性値は、XPathから来なければならない

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

以下は動作しません:)

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

はどのようにそれを行うには?

<Party role="{some/xpath/path}"> 

答えて

29

属性は、{}を使用して属性値テンプレート構文をサポートしています。適用-テンプレートもちろん​​

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

代替が必要なだけであるとして属性および/または子ノードが存在する場合、あなたはまた、(例えば恒等変換テンプレートによってコピーする)処理することにしたいです。

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

が何をすべき:リテラル結果要素の

2

あなたは以下のサンプルを試すことができます:ここでは

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

私はXMLノードパーティーに属性の役割を設定しています。

関連する問題