我需要根據排序組中的前一個兄弟運行條件操作。我知道前面的兄弟函數作用於原始文檔,而不是排序結果。有沒有辦法在排序結果列表上進行操作?我不認爲muenchian分組方法是我需要的,因爲我不想基於前面的兄弟進行分組。xslt 1.0排序組前同胞
鑑於下面的XML我想按容器的值進行排序,然後測試以查看前面的兄弟(在排序結果中)的type屬性是否不同,如果是我需要輸出新的@type的值,但我不想按@type排序結果。
XML
<c>
<did>
<container id="cid1059023" type="Box">C 3</container>
<container id="cid1059004" type="Map-case">C 1</container>
<container id="cid1059002" type="Binder">OSxxx-3</container>
<container id="cid1059042" type="Box">OSxxx-1</container>
</did>
</c>
<c>
<did>
<container id="cid1059025" type="Box">C 4</container>
<container id="cid1059006" type="Map-case">C 2</container>
</did>
</c>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" version="1.0">
<xsl:template match="/">
<table>
<xsl:for-each select="child::*/container[@id]">
<xsl:sort select="."/>
<tr>
<td class="container">
<xsl:if test="@type != preceding-sibling::*/@type">
<xsl:value-of select="@type"/>
</xsl:if>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
感謝。
http://stackoverflow.com/questions/5205276/do-xpath-axes-respect-xslt-sorting – dkackman 2011-04-15 00:39:23
任何方式來做到這一點沒有擴展功能? – Winona 2011-04-15 01:24:15
我不相信,除非你可以使用xslt 2 – dkackman 2011-04-15 01:53:50