使用xslt遍历简单的xml

时间:2019-03-13 15:56:17

标签: xml xslt xslt-2.0

我有一条肥皂消息

 <soapenv:Envelope 
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
         <id>0</id>
         <id>1</id>
       </soapenv:Body>
  </soapenv:Envelope>

我想遍历id元素,并检查当前元素是否具有值= 1,但我的xslt无法正常工作。

   <xsl:template match="/">
         <xsl:for-each select="node()">
          <xsl:if test="current()/text='1'">
          do something
          </xsl:if>
         </xsl:for-each>
   </xsl:template> 

有人可以指出我做错了什么,并指导我如何进行吗?

编辑:我需要在id之一等于1时返回true的东西,否则返回false。

2 个答案:

答案 0 :(得分:1)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="soapenv:Envelope">
        <xsl:for-each select="soapenv:Body">
            <xsl:if test="id='1'">
                do something
            </xsl:if>
        </xsl:for-each>
    </xsl:template>
You may use like this

答案 1 :(得分:1)

  

我想遍历id元素并检查当前元素   值= 1

您不需要这样做。下面的表达式:

/soapenv:Envelope/soapenv:Body/id=1

如果一个或多个true元素的值为1,则返回id,否则false


演示https://xsltfiddle.liberty-development.net/ej9EGc8