使用 xslt 重命名具有固定节点值的增量节点



我想使用 xslt 1.0 从我的输入 xml 中获得低于输出。你能建议一种方法来做到这一点吗?

    Input xml:
    <result>
      <item0>
        <Name>Customer1</Name>
        <location>1360190</location>
      </item0>
     <item1>
       <Name>Customer2</Name>
      <location>1360190</location>
    </item1>
  </result>
     Output xml:
      <result>
        <item>
          <Name>Customer1</Name>
          <location>1360190</location>
        </item>
        <item>
          <Name>Customer2</Name>
          <location>1360190</location>
        </item>
      </result>

如@LingamurthyCS所述,请考虑使用标识转换和模板来重命名具有各种 XPath 匹配引用<item>节点,如下所示:

使用结果参考和子元素上的应用模板

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
  <!-- Identity Transform -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="result/*">
    <item>
      <xsl:apply-templates select="*"/>
    </item>
  </xsl:template>               
</xsl:transform>

没有结果引用和子元素的副本

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
  <!-- Identity Transform -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="/*/*">
    <item>
      <xsl:copy-of select="*"/>
    </item>
  </xsl:template>               
</xsl:transform>

项目参考:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
  <!-- Identity Transform -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="*[contains(name(), 'item')]">
    <item>
      <xsl:apply-templates />
    </item>
  </xsl:template>               
</xsl:transform>

相关内容

  • 没有找到相关文章

最新更新