Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在XSLT2.0中的键后获取值_Xslt_Xslt 2.0 - Fatal编程技术网

在XSLT2.0中的键后获取值

在XSLT2.0中的键后获取值,xslt,xslt-2.0,Xslt,Xslt 2.0,以我的XML为例: <Data>/Keys1/ABCD/keys4/KLDS111/keys2/88888/keys5//ID/34234/keys5/Sample</Data> /Keys1/ABCD/keys4/KLDS111/keys2/88888/keys5//ID/34234/keys5/Sample 我需要得到每个键后的值。钥匙可以按任何顺序排列,以下是我需要检查的钥匙: /键1/ /键2/ /键4/ /键5//ID/ /键5/ 我的预期输出: <

以我的XML为例:

<Data>/Keys1/ABCD/keys4/KLDS111/keys2/88888/keys5//ID/34234/keys5/Sample</Data>
/Keys1/ABCD/keys4/KLDS111/keys2/88888/keys5//ID/34234/keys5/Sample
我需要得到每个键后的值。钥匙可以按任何顺序排列,以下是我需要检查的钥匙:

  • /键1/
  • /键2/
  • /键4/
  • /键5//ID/
  • /键5/
我的预期输出:

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

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


非常感谢您的反馈。

以下是如何提取
键2的值:

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

演示:



注意,XML是区分大小写的。

我认为,您的方法是好的;请注意,在XSLT中,数组称为序列。首先,标记您的字符串,将其存储在序列中,并使用regex检索键。