我想检查在我的XML中是否存在具有包含字符串type_attachment_
的type属性的节点。
检查它是否正确?
<xsl:if test="count(*[contains(@Type, 'type_attachment_')]) > 0">
something
</xsl:if>
我不知道这个节点是如何嵌套的。例如,它可以简单:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<hello-world>
<greeter>
<dsdsds>An XSLT Programmer
<greeting type = 'type_attachment_'>Hello, World!
</greeting>
</dsdsds>
</greeter>
</hello-world>
但也可以包含嵌套在不同其他元素中的此节点。
答案 0 :(得分:4)
与现有节点匹配的表达式是真实的。与任何节点不匹配的表达式都是假的。
因此,您无需计算返回的节点集。只需测试一下是否匹配。
<xsl:if test="*[contains(@Type, 'type_attachment')]">
something
</xsl:if>
答案 1 :(得分:1)
找出一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:param name="filt">
<filters>
<ritem type="type_attachment_" relateditemnumber="8901037"/>
<ritem relateditemnumber="8901038"/>
<ritem type="type_attachment_" relateditemnumber="8901039"/>
<ritem relateditemnumber="8901040"/>
</filters>
</xsl:param>
<xsl:template match="/">
<xsl:for-each select="$filt/filters/ritem[@type='type_attachment_']">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出:
<ritem type="type_attachment_" relateditemnumber="8901037"/>
<ritem type="type_attachment_" relateditemnumber="8901039"/>