我很少使用XLST,在尝试计算父节点中的子节点时,结果常常非常令人困惑。
编辑:
XML的结构如下:
<?xml version="1.0"?>
<Response>
<result>
<name>Someone</name>
**<rating>4.5</rating>**
<review>
<text>Some review.</text>
</review>
<review>
<text>Another review.</text>
</review>
</result>
<result>
<name>Another one</name>
**<rating>2</rating>**
<review>
<text>Blah, grieve, blah.</text>
</review>
<review>
<text>Blah, grrrrr, blah.</text>
</review>
<review>
<text>Blah, good grrrrr, blah.</text>
</review>
</result>
...
...
</Response>
模板(简化版)如下:
**<body>
<xsl:apply-templates/>
</body>**
<xsl:template match="Response/result">
<div class="item">
<div class="name">
<xsl:value-of select="name"/>
</div>
<xsl:if test="rating">
<span class="review-count">
**(<xsl:value-of select="count(review)"/>)**
</span>
</xsl:if>
</div>
</xsl:template>
使用这种方法我得不到正确的子节点计数。除了count(review)
之外,我还尝试了count(descendant::review)
和几种xPath变化。我知道我错过了一些简单的东西 - 但是是什么呢?
count()
不会被执行。 - Daniel Haley**(2)**
,第二个结果为**(3)**
。 - Daniel Haley