2012-07-19 64 views
1

使用XML和XSL的值從XML節點,我想解析XML輸入特定節點和標籤。如果標籤值以「z」開頭,那麼我想刪除該節點。 (或創建沒有這個節點的新文件的XML文件)如何刪除基於標籤

是否附以供參考示例XML文件。由於最後一個節點顯示名稱以「z *」開頭,所以我希望最後一個節點應該被刪除。

「zseafood」

在此先感謝。

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<ItemSet xmlns:ns1="urn:/Items/data"> 
    <ns1:ObjectName>com</ns1:ObjectName> 
    <ListOfItems> 
     <Item> 
     <ns1:Name>name1</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>fruits</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>120</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
     <ns1:Name>name2</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>vegetables</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>24.</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
     <ns1:Name>name3</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>meat</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>12.</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
     <ns1:Name>name4</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>zseafood</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>12.</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
    </ListOfItems> 
</ItemSet> 

回答

1

該轉化(的identity rule首要):

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns1="urn:/Items/data"> 
    <xsl:output 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="Item[.//ns1:DisplayName[starts-with(., 'z')]]"/> 
</xsl:stylesheet> 

當所提供的XML文檔施加:

<ItemSet xmlns:ns1="urn:/Items/data"> 
    <ns1:ObjectName>com</ns1:ObjectName> 
    <ListOfItems> 
     <Item> 
      <ns1:Name>name1</ns1:Name> 
      <ns1:ListOfItemDesc> 
       <ItemTranslation> 
        <ns1:DisplayName>fruits</ns1:DisplayName> 
        <ns1:ValidationErrorMsg>120</ns1:ValidationErrorMsg> 
       </ItemTranslation> 
      </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
      <ns1:Name>name2</ns1:Name> 
      <ns1:ListOfItemDesc> 
       <ItemTranslation> 
        <ns1:DisplayName>vegetables</ns1:DisplayName> 
        <ns1:ValidationErrorMsg>24.</ns1:ValidationErrorMsg> 
       </ItemTranslation> 
      </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
      <ns1:Name>name3</ns1:Name> 
      <ns1:ListOfItemDesc> 
       <ItemTranslation> 
        <ns1:DisplayName>meat</ns1:DisplayName> 
        <ns1:ValidationErrorMsg>12.</ns1:ValidationErrorMsg> 
       </ItemTranslation> 
      </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
      <ns1:Name>name4</ns1:Name> 
      <ns1:ListOfItemDesc> 
       <ItemTranslation> 
        <ns1:DisplayName>zseafood</ns1:DisplayName> 
        <ns1:ValidationErrorMsg>12.</ns1:ValidationErrorMsg> 
       </ItemTranslation> 
      </ns1:ListOfItemDesc> 
     </Item> 
    </ListOfItems> 
</ItemSet> 

產生想要的,正確[R esult

<ItemSet xmlns:ns1="urn:/Items/data"> 
    <ns1:ObjectName>com</ns1:ObjectName> 
    <ListOfItems> 
     <Item> 
     <ns1:Name>name1</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>fruits</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>120</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
     <ns1:Name>name2</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>vegetables</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>24.</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
     <Item> 
     <ns1:Name>name3</ns1:Name> 
     <ns1:ListOfItemDesc> 
      <ItemTranslation> 
       <ns1:DisplayName>meat</ns1:DisplayName> 
       <ns1:ValidationErrorMsg>12.</ns1:ValidationErrorMsg> 
      </ItemTranslation> 
     </ns1:ListOfItemDesc> 
     </Item> 
    </ListOfItems> 
</ItemSet>