使用xslt代码搜索并获取xml标记

时间:2015-10-12 18:14:44

标签: xml xslt-1.0 xslt-2.0 ibm-datapower

我是xslt编程的新手。我希望得到帮助,以获得我的要求的代码,

我有一个类似

的xml文件
 <Tags>
 <tag>
 <value>abc</value>
 </tag>
 <tag>
 <value>def</value>
  </Tags>

文本内部值标记是将在传入的xml请求中出现的某些标记的值。

现在,我需要一个xslt代码,通过查看我提供的示例xml中存在的标记列表,搜索传入的xml是否包含任何标记。如果标签在那里,我想将该标签的值保存在变量中。

由于

1 个答案:

答案 0 :(得分:0)

我将XML片段设为有效的XML并将其存储在此处: http://stamm-wilbrandt.de/en/forum/Tags.xml

下面的样式表利用了字符串值(当前节点的“name()”)和节点集(Tags.xml中的所有&lt; value&gt;)之间XPath比较的强大功能:

$ coproc2 Tags.xsl <(echo '<d><abc/></d>') http://dp1-l3.boeblingen.de.ibm.com:2223
abc
$ 
$ cat Tags.xsl 
<!DOCTYPE xsl:stylesheet [ 
  <!ENTITY url "http://stamm-wilbrandt.de/en/forum/Tags.xml"> 
  <!ENTITY LF "<xsl:text>&#10;</xsl:text>">
]>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:output omit-xml-declaration="yes" />

  <xsl:variable name="tags" select="document('&url;')" />

  <xsl:template match="/">
    <xsl:for-each select="//*[name()=$tags/Tags/tag/value]">
      <xsl:value-of select="name()" />&LF;
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
$