如何return XSL中以字符串开头的输入计数?
How to return the count of input that start with a string in XSL?
我正在尝试 return 以 NB 开头的名称的数量,但我遇到了麻烦 returns 0。我相信我的语法是正确的,所以有点令人沮丧看到它 return 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
你可以这样做:
<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>
I'm trying to return the count of names which start with NB
如果您想计算以“NB”开头的名称,请使用 starts-with()
函数,而不是 contains()
函数:
<xsl:value-of select="count(breaches/breach[starts-with(name, 'NB')])"/>
这实际上计算了 breach
个具有以“NB”开头的子 name
元素的元素。 IOW,它假设每个 breach
只有一个 name
。如果这样的假设不正确,那么使用:
<xsl:value-of select="count(breaches/breach/name[starts-with(., 'NB')])"/>
计算实际的 name
个元素。
我正在尝试 return 以 NB 开头的名称的数量,但我遇到了麻烦 returns 0。我相信我的语法是正确的,所以有点令人沮丧看到它 return 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
你可以这样做:
<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>
I'm trying to return the count of names which start with NB
如果您想计算以“NB”开头的名称,请使用 starts-with()
函数,而不是 contains()
函数:
<xsl:value-of select="count(breaches/breach[starts-with(name, 'NB')])"/>
这实际上计算了 breach
个具有以“NB”开头的子 name
元素的元素。 IOW,它假设每个 breach
只有一个 name
。如果这样的假设不正确,那么使用:
<xsl:value-of select="count(breaches/breach/name[starts-with(., 'NB')])"/>
计算实际的 name
个元素。