Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xslt测试一组节点的值相等性_Xslt - Fatal编程技术网

xslt测试一组节点的值相等性

xslt测试一组节点的值相等性,xslt,Xslt,给定以下xml: <parameterGroup> <parameter value="1" name="Level0_stratum"> </parameter> <parameter value="1" name="Level2_stratum"> </parameter> <parameter value="1" name="Level1_stratum"> </p

给定以下xml:

<parameterGroup>
    <parameter value="1" name="Level0_stratum">
    </parameter>
    <parameter value="1" name="Level2_stratum">
    </parameter>
    <parameter value="1" name="Level1_stratum">
    </parameter>
    <parameter value="6" name="foo">
    </parameter>       
    <parameter value="9" name="bar">
    </parameter>    
</parameterGroup>

但我不确定比较所有@value属性是否相等的最有效方法是什么?

我相信这应该可以实现您想要做的事情(行的
值不是必需的,只是用来显示变量的值):

在将第三个
值更改为8(或任何其他值)后,对示例输入运行此操作时,结果为:

3 strata. All equal: true
3 strata. All equal: false

我相信这应该是您想要做的(行的
值不是必需的,只是用来显示变量的值):

在将第三个
值更改为8(或任何其他值)后,对示例输入运行此操作时,结果为:

3 strata. All equal: true
3 strata. All equal: false
如果ends-with()可用,那么您使用的是XSLT 2.0,因此distinct-values()可用,因此您只需执行以下操作即可

count(distinct-values(
  //parameter[starts-with(@name,'Level') and ends-with(@name,'_stratum') ])/@value))
= 1
如果ends-with()可用,那么您使用的是XSLT 2.0,因此distinct-values()可用,因此您只需执行以下操作即可

count(distinct-values(
  //parameter[starts-with(@name,'Level') and ends-with(@name,'_stratum') ])/@value))
= 1

解决这个问题的一种方法是编写一个自定义java函数;但如果不需要的话,我宁愿不这样做;但是如果不需要的话,我宁愿不这样做。您之所以将ends with更改为substring函数,是因为XSLT 1.0中不存在
ends-with()
,我想这可能就是您正在使用的(我忘了您说过您已经得到了
ends with
的公式)。如果
功能结束,那么无论如何,这是更好的选择。我将更新我的答案。您之所以将ends with更改为substring函数?原因很简单,因为XSLT 1.0中不存在
ends-with()
,我想这可能就是您正在使用的(我忘了您说过您已经得到了
ends with
working的公式)。如果
功能结束,那么无论如何,这是更好的选择。我会更新我的答案。答案后面有一个错误的括号。除此之外,此解决方案的优点是在没有值时返回false。在[1]之后有一个错误的大括号。除此之外,此解决方案的优点是在没有值时返回false