如何获取任何子值的出现次数。从下面的代码我有子值<Name>Network B</Name>
,即'网络B'。现在如何找到有多少运算符节点具有此值。
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:w3="http://www.w3.org">
<xsl:output method="html" indent="yes"/>
<xsl:variable name="allStations" select="//w3:OperatorStation"/>
<xsl:template match="/">
<xsl:value-of select="count($allStations[Nodes/ChildNodes/Name = 'Network B'])"/>
//Here it return 0(zero) count always
</xsl:template>
</xsl:stylesheet>
输入XML文件
<?xml version="1.0" encoding="utf-8"?>
<OperatorStationCollection xmlns="http://www.w3.org" >
<OperatorStation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Nodes>
<ChildNodes>
<Name>Network A</Name>
</ChildNodes>
</Nodes>
</OperatorStation>
<OperatorStation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Nodes>
<ChildNodes>
<Name>Network B</Name>
</ChildNodes>
</Nodes>
</OperatorStation>
<OperatorStation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Nodes>
<ChildNodes>
<Name>Network A</Name>
</ChildNodes>
</Nodes>
</OperatorStation>
</OperatorStationCollection>
Desired Outout:此处没有出现'Network B'1
答案 0 :(得分:0)
上的默认命名空间声明
<OperatorStationCollection xmlns="http://www.w3.org" >
表示所有其后代元素(包括Nodes
,ChildNodes
和Name
)属于此命名空间,因此您需要使用{{1在路径中的那些步骤上也加上前缀:
w3:
您当前的XSLT正在寻找不在命名空间中的<xsl:value-of select="count($allStations[
w3:Nodes/w3:ChildNodes/w3:Name = 'Network B'])"/>
,Nodes
和ChildNodes
元素,并正确地确定没有。