删除包含特定值的标记

时间:2013-08-22 09:49:42

标签: xml xslt

我想删除包含值'()z()'和空标记的记录, 输入XML:

<R>
  <B_01>
   <C_01_02>()z()</C_01_02>
   <C_01_03>()z()</C_01_03>
   <C_01_04>()z()</C_01_04>
   <C_01_05>()z()</C_01_05>
   <B_01_01>
     <C_01_01_01>()z()</C_01_01_01>
     <C_01_01_02>()z()</C_01_01_02>
   </B_01_01>  
  </B_01>
  <B_01>
   <C_01_01>1116</C_01_01>
   <C_01_02>0</C_01_02>
   <C_01_03>1944-01-01T00:00:00</C_01_03>
   <B_01_01>
    <C_01_01_01>1900001761</C_01_01_01>
    <M_01_01_01>0</M_01_01_01>
    <M_01_01_01>1</M_01_01_01>
    <M_01_01_02/><M_01_01_03/>
    </B_01_01>
    <M_01_01/>
    <M_01_02/>
    <M_01_03/>
   <T1_01_01>ARNAUD</T1_01_01>
   <T1_01_02>JEAN MARIE</T1_01_02>
  </B_01>
</R>

我尝试了许多scirpts,但它没有用

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

也许这个?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="no" indent="no"/>
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  <!--xsl:template match="*[not(text()) or text() = '()z()']"/-->
  <xsl:template match="*[not(node()) or text() = '()z()']"/> <!-- better -->
</xsl:stylesheet>