使用 xslt 循环访问简单的 xml



我有一条肥皂消息

<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的东西,否则为假。

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

你不需要这样做。以下表达式:

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

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


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

<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

最新更新