34

例如,我想给这个节点添加一个属性:

<Party>

所以它看起来像:

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

属性值必须来自 XPath。

以下将不起作用:)

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

怎么做?

4

3 回答 3

48

文字结果元素的属性支持属性值模板语法,使用{}

<Party role="{some/xpath/path}">
于 2013-06-20T11:39:19.280 回答
12
<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>

当然,仅当您还希望处理属性和/或子节点(例如,要由身份转换模板复制)时,才需要应用模板。

于 2013-06-20T11:39:35.740 回答
8

您可以尝试以下示例:

<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 节点 Party。

于 2017-09-26T08:39:11.577 回答