我正在使用xslt 2.0將一個xml文件轉換爲另一個xml文件。在XSLT 2.0中,我創建了一個接受一個參數的函數。實際上,參數是一個<w:p>
元素的集合。因此,在函數中我使用<xsl:for-each-group>
以獲得每個<w:p>
並逐一處理。假設,下面提到的XML文件包含一個<w:p>
元素之間的元素。因此,現在我想在<xsl:for-each-group>
塊中處理每個<w:p>
元素之後在函數中檢查following-sibling::w:table
。如何在xslt 2.0中獲取當前處理元素的下一個緊接的下一個兄弟節點?
XML文件
<w:document>
<w:p> para0</w:p>
<w:p> para1</w:p>
<w:table>table</w:table>
<w:p>para3</w:p>
</w:document>
XSLT片段:
<xsl:for-each-group select="$paragraphs" group-starting-with="w:p">
<xsl:apply-templates select="current-group()"> <!-- for processing <w:p>elements -->
</xsl:apply-templates>
<xsl:if test="following-sibling::w:table"> <!--check following-sibling of current <w:p> is <w:table> -->
<xsl:apply-templates select="following-sibling::w:table"> </xsl:apply-templates>
</xsl:if>
</xsl:for-each-group>
但following-sibling::w:table
檢查調用時的第一要素processed.I將調用只有當第二個要素是processed.So,我想只檢查當前處理元素的下一個立即following-sibling
是否在那個地方...
所以,請指導我擺脫這個問題...
請顯示您的示例輸入的一些預期輸出。 $段落序列是否可以包含p和table以外的其他節點?還是它被稱爲p和表? – 2012-07-31 07:09:15
我的$段落只包含p。但xml文件也包含很多其他節點 – Saravanan 2012-07-31 08:10:51