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_Xslt 1.0 - Fatal编程技术网

Xslt 控制整个节点中的元素值是否相同

Xslt 控制整个节点中的元素值是否相同,xslt,xslt-1.0,Xslt,Xslt 1.0,需要一个表达式来控制所有节内容列表项中的所有灯光范围是否相同 这是我的XML: <SECTION_CONTENT_LIST_ITEM> <------- First Group <NTC_LIGHTLISTPRODUCT> <IMMUTABLE_ID>5585</IMMUTABLE_ID> <LIGHT_INFORMATION_LIST> <LIGHT_INF

需要一个表达式来控制所有节内容列表项中的所有灯光范围是否相同

这是我的XML:

<SECTION_CONTENT_LIST_ITEM>  <------- First Group
    <NTC_LIGHTLISTPRODUCT>
        <IMMUTABLE_ID>5585</IMMUTABLE_ID>
        <LIGHT_INFORMATION_LIST>
            <LIGHT_INFORMATION>
                <LIGHT_COLOUR>G</LIGHT_COLOUR>  <-- LIGHT_COLOUR G
                <LIGHT_RANGE>3</LIGHT_RANGE>    <-- LIGHT_RANGE 3
            </LIGHT_INFORMATION>
            <LIGHT_INFORMATION>
                <LIGHT_COLOUR>R</LIGHT_COLOUR>  <-- LIGHT_COLOUR R
                <LIGHT_RANGE>3</LIGHT_RANGE>    <-- LIGHT_RANGE 3
            </LIGHT_INFORMATION>
        </LIGHT_INFORMATION_LIST>
    </NTC_LIGHTLISTPRODUCT>    
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>  <------- Second Group
    <NTC_LIGHTLISTPRODUCT>
        <IMMUTABLE_ID>6000</IMMUTABLE_ID>
        <LIGHT_INFORMATION_LIST>
            <LIGHT_INFORMATION>
                <LIGHT_COLOUR>R</LIGHT_COLOUR>  <-- LIGHT_COLOUR R
                <LIGHT_RANGE>10</LIGHT_RANGE>    <-- LIGHT_RANGE 10
            </LIGHT_INFORMATION>
            <LIGHT_INFORMATION>
                <LIGHT_COLOUR>G</LIGHT_COLOUR>  <-- LIGHT_COLOUR G
                <LIGHT_RANGE>10</LIGHT_RANGE>    <-- LIGHT_RANGE 10
            </LIGHT_INFORMATION>
            <LIGHT_INFORMATION>
                <LIGHT_COLOUR>W</LIGHT_COLOUR>  <-- LIGHT_COLOUR W
                <LIGHT_RANGE>12</LIGHT_RANGE>    <-- LIGHT_RANGE 12
            </LIGHT_INFORMATION>
        </LIGHT_INFORMATION_LIST>
    </NTC_LIGHTLISTPRODUCT>    
</SECTION_CONTENT_LIST_ITEM>

当所有灯光范围都具有相同的值时,以下XSLT输出
true
,否则
false

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/SECTION_CONTENT_LIST_ITEM">
    <xsl:value-of select="count(.//LIGHT_RANGE) = count(.//LIGHT_RANGE[. = (current()//LIGHT_RANGE)[1]])"/>
</xsl:template>
</xsl:stylesheet>


谢谢Lingamurthy CS,你帮了我很大的忙。+1感谢你出色的逻辑。使用“generate id”我们也可以这样做?@RudramuniTP,generate-id()为调用它的每个节点生成唯一的id,因此不会有帮助。这对该输入正确吗?generate id(.//LIGHT\u RANGE)=generate id(current()//LIGHT\u RANGE)。。和current()在您的情况下是相同的,因此计算结果为true。Try:generate id(.//LIGHT\u RANGE)=generate id(current()//LIGHT\u RANGE[2]),它将LHS与第二个LIGHT\u RANGE的id进行比较
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/SECTION_CONTENT_LIST_ITEM">
    <xsl:value-of select="count(.//LIGHT_RANGE) = count(.//LIGHT_RANGE[. = (current()//LIGHT_RANGE)[1]])"/>
</xsl:template>
</xsl:stylesheet>