Xslt 控制整个节点中的元素值是否相同
需要一个表达式来控制所有节内容列表项中的所有灯光范围是否相同 这是我的XML: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
<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>