我正在尝试根据父母的位置来计算节点。
这是一个例子:
<tbody>
<row>
<entry>L1C1</entry>
<entry>L1C2</entry>
<entry>L1C3</entry>
</row>
<row>
<entry>L2C1</entry>
<entry morerows="1">L2C2</entry>
<entry>L2C3</entry>
</row>
<row>
<entry>L3C1</entry>
<entry>L3C3</entry>
</row>
</tbody>
对于每个entry
,我想计算其entry
元素的row
元素的数量,这些元素的属性morerows
大于取决于位置的数字<xsl:variable name="nbRows">
<xsl:value-of select="count(ancestor::tbody/row)">
</xsl:value-of>
</xsl:variable>
<xsl:value-of select="count(parent::row/preceding-sibling::row/entry[@morerows > ($nbRows - count(current()/../preceding-sibling::row))])">
</xsl:variable>"/>
这一行。
我有这样的事情:
{{1}}
但是你可以想象,这不起作用。
有人可以帮我这个吗?
答案 0 :(得分:2)
如果我正确地理解了这个问题应该做的事情:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="row">
<xsl:variable name="nRows" select="count(../row)"/>
<xsl:variable name="precedingEntries" select="preceding-sibling::row/entry"/>
<xsl:variable name="minMoreRows" select="$nRows - position() + 1"/>
<n>
<xsl:value-of select="count($precedingEntries[@morerows>=$minMoreRows])"/>
</n>
</xsl:template>
<xsl:template match="/">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
</xsl:stylesheet>
输出 - 当应用于问题中的示例时 - 是:
<root>
<n>0</n>
<n>0</n>
<n>1</n>
</root>