2017-08-21 25 views
0

考虑我的XML:获得价值2.0

<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还不熟悉。

您的反馈非常感谢。

+0

我认为你的方法是好的方法;请注意,在XSLT中,数组被称为序列。首先,将字符串标记为[如Michael所示](https://stackoverflow.com/a/45796335),将其存储在一个序列中,并使用正则表达式检索密钥。 – colibrisson

回答

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> 

演示:http://xsltransform.net/jxDigUw


附:请注意,XML区分大小写。