首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查元素中的所有值是否相同

检查元素中的所有值是否相同
EN

Stack Overflow用户
提问于 2011-12-15 01:22:02
回答 2查看 2.8K关注 0票数 10

我有一个像这样的xml,值可以是

代码语言:javascript
复制
<n1>value1</n1>
<n1>value1</n1>
<n1>value2</n1>

我需要检查所有这些值是否都相同,如果相同,则需要将其分配给另一个元素。我使用的是XSLT v1.0。

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2011-12-15 04:45:37

问得好,+1。

只需使用

代码语言:javascript
复制
not(/*/n1[1] != /*/n1)

假设在一个名为$v的变量中选择了所有的n1元素,这可以用14个字符的XPath表达式来表示

代码语言:javascript
复制
not($v[1] != $v)

说明1

根据定义:

代码语言:javascript
复制
/*/n1[1] != /*/n1

如果/*/n1中存在其字符串值不等于/*/n1[1]的字符串值的节点,则恰好为true()

这一点的逻辑否定:

代码语言:javascript
复制
not(/*/n1[1] != /*/n1)

is true()当且仅当/*/n1中没有任何节点的字符串值不等于/*/n1[1]的字符串值--也就是说,如果/*/n1中的所有节点都具有相同的String值。

说明2

这遵循了一个更普遍的双重否定法则:

代码语言:javascript
复制
every x has property y

等同于:

代码语言:javascript
复制
There is no x that doesn't have property y
票数 15
EN

Stack Overflow用户

发布于 2011-12-15 03:54:33

假设有这样一份文档:

代码语言:javascript
复制
<root>
    <n1>value1</n1>
    <n1>value1</n1>
    <n1>value1</n1>
</root>

下面的简单样式表确定是否每个n1元素都具有相同的值:

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" omit-xml-declaration="yes"/>
    <xsl:template match="/">
        <xsl:value-of select="
            concat('All same? ', count(/*/n1[.=/*/n1[1]])=count(/*/n1))"/>
    </xsl:template>
</xsl:stylesheet>

输出:

代码语言:javascript
复制
All same? true

此样式表的关键是表达式:

代码语言:javascript
复制
count(/*/n1[.=/*/n1[1]])=count(/*/n1))

...which将其值等于第一个n1元素的值的n1元素的计数与所有n1元素的计数进行比较。仅当每个n1节点具有相同的值时,这些计数才相等。

通过首先将所有n1选择到名为n的变量中,可以使其更易于阅读

代码语言:javascript
复制
count($n[.=$n[1]])=count($n)

根据结果有条件地执行一些操作,如下所示:

代码语言:javascript
复制
<xsl:template match="/">
    <xsl:variable name="all" select="count(/*/n1[.=/*/n1[1]])=count(/*/n1)"/>
    <xsl:if test="$all">All same</xsl:if>
    <xsl:if test="not($all)">Not all same</xsl:if>
</xsl:template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8508852

复制
相关文章

相似问题

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