2010-09-01 28 views
8

Tôi có xml sau:Di chuyển nút XML khi nút con đáp ứng một số yêu cầu

<listaGiros> 

    <giro> 
     <idGiro type="int">89</idGiro> 
     <nombreGiro type="varchar">foo</nombreGiro> 
    </giro> 

    <giro> 
     <idGiro type="int">78</idGiro> 
     <nombreGiro type="varchar">apple</nombreGiro> 
    </giro> 

    <giro> 
     <idGiro type="int">10</idGiro> 
     <nombreGiro type="varchar"/> 
    </giro> 
</listaGiros> 

mà tôi muốn trở thành:

<listaGiros> 

    <giro> 
     <idGiro type="int">89</idGiro> 
     <nombreGiro type="varchar">foo</nombreGiro> 
    </giro> 

    <giro> 
     <idGiro type="int">78</idGiro> 
     <nombreGiro type="varchar">apple</nombreGiro> 
    </giro> 

</listaGiros> 

kể từ khi tôi cần phải loại bỏ tất cả các <giro> nút mà <nombreGiro> trống

Cách tốt nhất để làm điều đó bằng cách sử dụng XSLT là gì?
Cảm ơn bạn trước

Trả lời

10

Sử dụng:

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

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

<xsl:template match="giro[not(nombreGiro/text())]"/> 
</xsl:stylesheet> 

khi chuyển đổi này được áp dụng trên các tài liệu XML cung cấp:

<listaGiros> 
    <giro> 
     <idGiro type="int">89</idGiro> 
     <nombreGiro type="varchar">foo</nombreGiro> 
    </giro> 
    <giro> 
     <idGiro type="int">78</idGiro> 
     <nombreGiro type="varchar">apple</nombreGiro> 
    </giro> 
    <giro> 
     <idGiro type="int">10</idGiro> 
     <nombreGiro type="varchar"/> 
    </giro> 
</listaGiros> 

các truy nã, kết quả chính xác được sản xuất :

<listaGiros> 
    <giro> 
     <idGiro type="int">89</idGiro> 
     <nombreGiro type="varchar">foo</nombreGiro> 
    </giro> 
    <giro> 
     <idGiro type="int">78</idGiro> 
     <nombreGiro type="varchar">apple</nombreGiro> 
    </giro> 
</listaGiros> 
+0

Cảm ơn bạn, đó chỉ là những gì tôi cần – azathoth

+0

+1 Câu trả lời hay. Bạn cũng có thể sử dụng '' –

Các vấn đề liên quan