首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回以XSL中的字符串开头的输入计数?

如何返回以XSL中的字符串开头的输入计数?
EN

Stack Overflow用户
提问于 2021-09-16 19:04:24
回答 2查看 73关注 0票数 0

我试图返回以NB开头的名称的计数,但当它返回0时,我遇到了问题。我相信我的语法是正确的,所以看到它返回0是有点令人沮丧的。任何帮助都将不胜感激!

XML输入:

代码语言:javascript
复制
    <?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

代码语言:javascript
复制
    <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>

结果

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-16 19:13:42

你可以这样做:

代码语言:javascript
复制
<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>

看到它在这里工作:https://xsltfiddle.liberty-development.net/jxWZS86

票数 0
EN

Stack Overflow用户

发布于 2021-09-16 19:25:17

我试图返回以NB开头的名字的计数

如果要计算以"NB“开头的名称,请使用starts-with()函数,而不是contains()函数:

代码语言:javascript
复制
<xsl:value-of select="count(breaches/breach[starts-with(name, 'NB')])"/>

这实际上计算了具有以"NB“开头的子breach元素的name元素。IOW,它假设每个breach只有一个name。如果这种假设是不正确的,那么使用:

代码语言:javascript
复制
<xsl:value-of select="count(breaches/breach/name[starts-with(., 'NB')])"/>

要计算实际的name元素,请执行以下操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69213866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档