2010-07-22 3 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). См. Мой ответ для краткого и полного решения. –

ответ

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

Я получаю его. Спасибо большое. –

+0

@ Говард-Цзя: Рад, что это было полезно. Тогда как насчет принятия моего ответа (нажав на значке отметки возле ответа)? :) –

+0

Также 'select =" @ * | DM [$ dmIndex] "' выполнит эту работу. – 2010-07-22 23:33:02

Смежные вопросы