2016-04-25 2 views
0

Сначала позвольте мне представить образец xml, чтобы вы, ребята, поняли, что после.Как скопировать определенный элемент в XML с помощью XSLT 1.0

<a>1</a> 
<b>1</b> 
<c>1</c> 
<d>1</d> 
<e>1</e> 
<f>1</f> 

Можно скопировать узел из a в b и из e в f. Мне нужно пренебречь узлами c и d.

Существует <xsl:copy>, который может копировать элементы, но мне нужно получить конкретный элемент из исходного XML.

спасибо.

+0

Ваш вопрос не ясен. Покажите ожидаемый результат преобразования - и не используйте пример с тем же значением в каждом узле. –

ответ

0

Уверенный, что вы можете удалить необходимые элементы. Просто напишите пустые шаблоны по указанным элементам после преобразования идентичности.

Источник XML

<root> 
    <a>1</a> 
    <b>1</b> 
    <c>1</c> 
    <d>1</d> 
    <e>1</e> 
    <f>1</f> 
</root> 

XSLT 1,0

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

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

    <!-- Empty Template to Remove Elements --> 
    <xsl:template match="c|d"/> 

</xsl:stylesheet> 

Выходной XML

<root> 
    <a>1</a> 
    <b>1</b> 
    <e>1</e> 
    <f>1</f> 
</root> 

В качестве альтернативы, выберите часть icular узлы держать:

XSLT 1,0

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

    <!-- Root Template Match -->  
    <xsl:template match="root"> 
    <xsl:copy> 
     <xsl:apply-templates select="a|b|e|f"/> 
    </xsl:copy> 
    </xsl:template> 

    <!-- Select Particular Elements --> 
    <xsl:template match="a|b|e|f"> 
     <xsl:copy-of select="."/> 
    </xsl:template> 

</xsl:stylesheet> 
Смежные вопросы