2010-07-22 35 views
3

我這裏有一個XML文件:如何使用XSLT的索引選擇指定的元素?

<DM_Function Function="attribute value"> 
    <DM> 
    <DM_Source SourceID="id1" SourceTitle="Title1" SourceContent="content1"> 
    </DM_Source> 
    </DM> 
    <DM> 
    <DM_Source SourceID="id2" SourceTitle="Title2" SourceContent="content2"> 
    </DM_Source> 
    </DM> 
    <DM> 
    <DM_Source SourceID="id3" SourceTitle="Title3" SourceContent="content3"> 
    </DM_Source> 
    </DM> 
</DM_Function> 

XSLT文件中,有一個變量:

<xsl:param name="dmIndex" select="2" /> 

我想將XML文件轉換成another.The變量是元素的索引,我希望另一個XML文件只顯示Root元素和指定的元素(包括屬性)。

+0

好問題(+1)。看到我的答案是一個簡短而完整的解決方案。 – 2010-07-22 03:20:40

回答

0

這種轉變

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:param name="dmIndex" select="2" /> 

<xsl:template match="/*"> 
    <xsl:copy> 
     <xsl:copy-of select="@*"/> 
     <xsl:copy-of select="DM[$dmIndex]"/> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

時所提供的XML文檔應用:

<DM_Function Function="attribute value"> 
    <DM> 
    <DM_Source SourceID="id1" SourceTitle="Title1" SourceContent="content1"> 
    </DM_Source> 
    </DM> 
    <DM> 
    <DM_Source SourceID="id2" SourceTitle="Title2" SourceContent="content2"> 
    </DM_Source> 
    </DM> 
    <DM> 
    <DM_Source SourceID="id3" SourceTitle="Title3" SourceContent="content3"> 
    </DM_Source> 
    </DM> 
</DM_Function> 

產生想要的,正確的結果

<DM_Function Function="attribute value"> 
    <DM> 
     <DM_Source SourceID="id2" SourceTitle="Title2" SourceContent="content2"/> 
    </DM> 
</DM_Function> 
+0

我明白了。非常感謝。 – 2010-07-22 10:57:42

+0

@ Howard-Jia:很高興這很有用。那麼如何接受我的答案(通過點擊接近答案的複選標記)? :) – 2010-07-22 12:35:32

+0

另外'select =「@ * | DM [$ dmIndex]」'將完成這項工作。 – 2010-07-22 23:33:02

相關問題