2011-10-10 141 views
1

我有一個XML文件,如下面的 ,我想只選擇rootelements並且沒有包含匹配模板的子元素。 有人可以幫助我如何編寫一個匹配模板,只選擇它的根元素? 感謝您的幫助。XSL轉換隻選擇根節點下的元素,不包含子節點

<root> 
<child1> 
<element1>Valule</element1> 
<element2>Value</element2> 
</child1> 
<child2> 
<element1>Value</element1> 
<element2>Value</element2> 
</child2> 
<rootelement1>rootval1</rootelement1> 
<rootelement2>rootval2</rootelement2> 
</root> 

回答

2

只選擇根標籤下的元素沒有子元素,你可以做以下

<xsl:apply-templates select="/root/*[not(*)]" /> 

或者,如果你當前所在的元素,將它簡化以下幾點:

<xsl:apply-templates select="*[not(*)]" /> 

因此,例如,具有以下XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/root"> 
     <xsl:apply-templates select="*[not(*)]" /> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

當適用於您的示例XML,以下是返回

<rootelement1>rootval1</rootelement1> 
<rootelement2>rootval2</rootelement2> 
+0

感謝添,那正是我想做的事。 – user987325