2016-01-12 2 views
0

У меня есть XML, как это,удалить узел XML с помощью conditoning в XSLT

ех 1.

<books> 
    <book type="ABA"></book> 
    <book type="ABC"></book> 
</books> 

ех 2.

<books> 
<book type="ABA"</book> 
</books> 

Если только ABA есть в xml, я хочу удалить весь узел Books. если вместе с aba другие значения есть, я хочу удалить только книгу, которая имеет это значение ABA, поэтому в результате xml будет только ABC внутри книг.

<books> 
<book type="ABC"></book> 
</books> 

для ex 2. книги узел не должен come.please помочь

ответ

1

Как насчет:

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

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

<xsl:template match="book[@type='ABA']"/> 

<xsl:template match="books[not(book[not(@type='ABA')])]"/> 

</xsl:stylesheet> 
+0

спасибо Майку gr8 помощь – Abi

+0

XSL также необходимо проверить, есть ли там или нет узел книги, если ее нет, то нет необходимости, чтобы проверить, что xml сам – Abi

+0

@Abi Я не понимаю ваш комментарий. Если 'books' не существует, то соответствующий шаблон никогда не будет создан. –

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