2013-06-20 16 views
17

, bu düğüme bir öznitelik eklemek istiyorum:XSLT kullanarak XML'de nasıl nitelik belirlenir? Örneğin

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

Özellik değeri XPath gelmesi gerekir: gibi

<Party> 

yüzden bakacağız.

şu çalışmaz :)

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

Bu nasıl yapmalı?

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

cevap

29

Nitelikler {} kullanılarak özellik değeri şablon sözdizimi destekler. nitelik ve/veya çocuk düğümleri de (örnek, bir kimlik dönüşümü şablonu tarafından kopyalanacak için) işlenecek istiyorum varsa Elbette alternatif

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

olarak uygulanır-şablonları gereklidir.

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

yapmalıdır: birebir hedef elemanların

2

aşağıdaki örnek deneyebilirsiniz: Burada

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

Bir xml düğümü Tarafa nitelik rol kuruyorum.