我有一個XML文件等如下:XSL:計數連續屬性
<Query>
<Rows>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="0"></Row>
<Row Pd="0"></Row>
<Row Pd="0"></Row>
<Row Pd="0"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="0"></Row>
<Row Pd="0"></Row>
<Row Pd="0"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
<Row Pd="1"></Row>
</Rows>
</Query>
這是用「PD」屬性項的基本上的有序列表(值= 0或1)。 我需要顯示的結果如下:
- 用Pd = 1的行的總數,
- 用Pd = 1(0,如果最新的Pd = 0)
- 最大數目最新連續的行的用PD =
連續行的意甲我設法得到1和2,但未能達到3
我1 & 2(XSLT 1.0)溶液:
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<div>
<h1>total # of Pd1 : <xsl:value-of select="sum(//Row/@Pd)"/></h1>
<h1># of consecutive Pd1: <xsl:apply-templates/> </h1>
</div>
</xsl:template>
<xsl:template match="//Row[not(following-sibling::Row[1]/@Pd=self::Row/@Pd)][1]">
<xsl:value-of select="sum(self::Row[1]/@Pd|preceding-sibling::Row/@Pd)"/>
</xsl:template>
</xsl:stylesheet>
對於上面引述的XML,預期的結果應該是:
歡迎提供針對問題3的解決方案的任何幫助(以及對提供的其他解決方案的改進)
您可以使用XSLT 2.0和這樣'XSL :for-each-group select =「// Row」group-adjacent =「@ Pd」'? –
不幸的是,只有XSLT 1.0 ...即使分組是一回事,在這些組中獲得最長的序列也不會那麼容易。 – Tang