2017-08-21 62 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區分大小寫。