我试图返回以NB开头的名称的计数,但当它返回0时,我遇到了问题。我相信我的语法是正确的,所以看到它返回0是有点令人沮丧的。任何帮助都将不胜感激!
XML输入:
<?xml version='1.1' encoding='UTF-8'?>
<breaches>
<breach>
<name>NB111</name>
<severity>MAJOR</severity>
</breach>
<breach>
<name>NB222</name>
<severity>MAJOR</severity>
</breach>
<breach>
<name>NB333</name>
<severity>MAJOR</severity>
</breach>
<breach>
<name>PO999</name>
<severity>MAJOR</severity>
</breach>
</breaches>XSL
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="count(/breaches/breach/name/*[contains(text(), 'NB')])" />
</xsl:template>
</xsl:stylesheet>结果
<?xml version="1.0" encoding="UTF-8"?>0发布于 2021-09-16 19:13:42
你可以这样做:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="count(breaches/breach/name[contains(., 'NB')])" />
</xsl:template>
</xsl:stylesheet>发布于 2021-09-16 19:25:17
我试图返回以NB开头的名字的计数
如果要计算以"NB“开头的名称,请使用starts-with()函数,而不是contains()函数:
<xsl:value-of select="count(breaches/breach[starts-with(name, 'NB')])"/>这实际上计算了具有以"NB“开头的子breach元素的name元素。IOW,它假设每个breach只有一个name。如果这种假设是不正确的,那么使用:
<xsl:value-of select="count(breaches/breach/name[starts-with(., 'NB')])"/>要计算实际的name元素,请执行以下操作。
https://stackoverflow.com/questions/69213866
复制相似问题