XSLT:基于多个标准计算特定节点
我有一些XML,我想将其转换为一个报告,显示在一个日期周期内匹配特定条件的节点数 下面是xml示例。我试图根据日期范围内的状态显示节点数 我可以根据日期范围进行匹配,但我无法显示该范围内的状态计数。欢迎指点XSLT:基于多个标准计算特定节点,xslt,Xslt,我有一些XML,我想将其转换为一个报告,显示在一个日期周期内匹配特定条件的节点数 下面是xml示例。我试图根据日期范围内的状态显示节点数 我可以根据日期范围进行匹配,但我无法显示该范围内的状态计数。欢迎指点 <?xml version="1.0" encoding="UTF-8"?> <List> <Item> <Value name="Status">Open</Value>
<?xml version="1.0" encoding="UTF-8"?>
<List>
<Item>
<Value name="Status">Open</Value>
<Value name="Date">2012-09-01</Value>
<Value name="Name">Item 1</Value>
</Item>
<Item>
<Value name="Status">Open</Value>
<Value name="Date">2012-10-15</Value>
<Value name="Name">Item 2</Value>
</Item>
<Item>
<Value name="Status">Open</Value>
<Value name="Date">2012-10-15</Value>
<Value name="Name">Item 3</Value>
</Item>
<Item>
<Value name="Status">Pending</Value>
<Value name="Date">2012-10-20</Value>
<Value name="Name">Item 4</Value>
</Item>
<Item>
<Value name="Status">Closed</Value>
<Value name="Date">2012-10-30</Value>
<Value name="Name">Item 5</Value>
</Item>
</List>
就这么简单:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pStartDate" select="20121001"/>
<xsl:param name="pEndDate" select="20121031"/>
<xsl:template match="/">
<xsl:variable name="vInRange" select=
"/*/*[translate(Value[@name='Date'],'-','') >= $pStartDate
and
$pEndDate >= translate(Value[@name='Date'],'-','')
]"/>
Open <xsl:value-of select="count($vInRange[Value[@name='Status']='Open'])"/>
Closed <xsl:value-of select="count($vInRange[Value[@name='Status']='Closed'])"/>
Pending <xsl:value-of select="count($vInRange[Value[@name='Status']='Pending'])"/>
</xsl:template>
</xsl:stylesheet>
Open 2
Closed 1
Pending 1
非常感谢,迪米特里·诺瓦切夫
<List>
<Item>
<Value name="Status">Open</Value>
<Value name="Date">2012-09-01</Value>
<Value name="Name">Item 1</Value>
</Item>
<Item>
<Value name="Status">Open</Value>
<Value name="Date">2012-10-15</Value>
<Value name="Name">Item 2</Value>
</Item>
<Item>
<Value name="Status">Open</Value>
<Value name="Date">2012-10-15</Value>
<Value name="Name">Item 3</Value>
</Item>
<Item>
<Value name="Status">Pending</Value>
<Value name="Date">2012-10-20</Value>
<Value name="Name">Item 4</Value>
</Item>
<Item>
<Value name="Status">Closed</Value>
<Value name="Date">2012-10-30</Value>
<Value name="Name">Item 5</Value>
</Item>
</List>
Open 2
Closed 1
Pending 1