【问题标题】:How to set attribute in XML using XSLT?如何使用 XSLT 在 XML 中设置属性?
【发布时间】:2013-06-17 05:48:22
【问题描述】:

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

<Party>

所以它看起来像:

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

属性值必须来自 XPath。

以下将不起作用:)

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

怎么做?

【问题讨论】:

    标签: xml xslt xpath xslt-2.0


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      <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>
      

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

      【讨论】:

        【解决方案3】:

        您可以尝试以下示例:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-21
          • 1970-01-01
          • 1970-01-01
          • 2012-08-24
          相关资源
          最近更新 更多