XSLT_1 - 从几个不同的来源获取第二个元素



我有两个不同的输入文件,将由一个xslt处理。如何从第一个输入中获取第二个子元素"节点"段,从第二个输入中获取第二个"组"元素段。

第一个输入文件的示例:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <node>
    <count>1</count>
    <value>111</value>
  </node>
  <node>
    <count>2</count>
    <value>222</value>
  </node>
  <node>
    <count>3</count>
    <value>333</value>
  </node>
</root>

第二个输入文件的示例:

<?xml version="1.0" encoding="utf-8"?>
    <root>
      <group>
        <count>1</count>
        <value>111</value>
      </group>
      <group>
        <count>2</count>
        <value>222</value>
      </group>
      <group>
        <count>3</count>
        <value>333</value>
      </group>
    </root>

下面的脚本不起作用。您能否协助如何解决它。

<xsl:template match="*[local-name()= 'root']">
    <xsl:variable name="unknown">
      <xsl:if test="normalize-space(*[2]) = 'node'">
        <xsl:value-of select="*[local-name()= 'node'][2]"/>
      </xsl:if>
      <xsl:if test="normalize-space(*[2]) = 'group'">
        <xsl:value-of select="*[local-name()= 'group'][2]"/>
      </xsl:if>
    </xsl:variable>
    <xsl:copy-of select="$unknown"/>
  </xsl:template>

预期输出为:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <node>
    <count>2</count>
    <value>222</value>
  </node>
</root>

<?xml version="1.0" encoding="utf-8"?>
<root>
  <group>
    <count>2</count>
    <value>222</value>
  </group>
</root>

谢谢大流士

怎么样:

<xsl:template match="/root">
    <xsl:copy>
        <xsl:copy-of select="*[2]"/>
    </xsl:copy>
</xsl:template>

或:

<xsl:template match="/root">
    <xsl:copy>
        <xsl:copy-of select="(node|group)[2]"/>
    </xsl:copy>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新