我有下面的XML,
<employees>
<employee>
<id>1</id>
<name>AAA</name>
</employee>
<employee>
<id>1</id>
<name>AAA</name>
</employee>
<employee>
<id>2</id>
<name>AAA</name>
</employee>
<employee>
<id>2</id>
<name>AAA</name>
</employee>
</employees>
我通过xsl:foreach迭代上述XML。我有一个要求是在显示id&#39; 1&#39;之后的记录。我必须留一个空行。在XSL中,我们不能存储前一项的id值以与当前元素进行比较。那么我们如何识别具有新ID的项目? 如何通过使用来实现这一目标?
在这里输入代码
谢谢, Santhosh。
答案 0 :(得分:0)
问:我有一个要求是在显示id&#39; 1&#39;我必须保留一行空白。
您可以使用 preceding-sibling :: 来检查&#34;之前的项目&#34;。
<xsl:variable name="this" select="." />
<xsl:if test="$this/id != preceding-sibling::employee[1]/id" >
<xsl:text> </xsl:text>
</xsl:if>
我不会在这里使用for-each(但也可能)考虑使用模板。尝试这样的事情:
<xsl:template match="employee">
<xsl:variable name="this" select="." />
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
<xsl:if test="$this/id != preceding-sibling::employee[1]/id" >
<xsl:text> --------------;</xsl:text>
</xsl:if>
</xsl:template>