在xslt 2.0中的键之后获取值

时间:2017-08-21 11:38:50

标签: xslt xslt-2.0

考虑我的XML:

<Data>/Keys1/ABCD/keys4/KLDS111/keys2/88888/keys5//ID/34234/keys5/Sample</Data>

我需要在每个键后获取值。密钥可以是任何顺序,这是我需要检查的密钥:

  • /键1 /
  • / keys2 /
  • / keys4 /
  • / keys5 // ID /
  • / keys5 /

我的预期输出:

<Data>
  <DGH_hdj>ABCD</DGH_hdj>
  <hdu_pd>
    <hdu>KLDS111</hdu>
    <ydhf>88888</ydhf>
  </hdu_pd>
  <oOo>34234</oOo>
  <pio>Sample</pio>
</Data>

在我的示例文件中,我需要获取每个键之间的值。我在想 使用数组并获取每个键的索引。但是,问题在于我不是 我知道如何应用这个逻辑,因为我对XSLT还不熟悉。

非常感谢您的反馈。

1 个答案:

答案 0 :(得分:1)

以下是如何提取keys2的价值:

<xsl:template match="Data">
    <xsl:variable name="t" select="tokenize(., '/')" />
    <result>
        <xsl:value-of select="$t[index-of($t, 'keys2') + 1]"/>
    </result> 
</xsl:template>

演示:continuation-passing style

P.S。请注意,XML区分大小写。