2013-06-20 7 views
17

Например, я хочу, чтобы добавить атрибут к этому узлу:Как установить атрибут в XML с помощью XSLT?

<Party> 

Так это будет выглядеть:

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

Значение атрибута должно исходить из XPath.

Следующая не будет работать :)

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

Как сделать это?

ответ

29

Атрибуты буквенных элементов результата поддержки атрибута шаблона значение синтаксис, используя {}:

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

должен делать. В качестве альтернативного

<xsl:template match="Party"> 
    <xsl:copy> 
    <xsl:attribute name="role" select="some/xpath/path"/> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</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-узла партии.

Смежные вопросы