1

xml と xsl を使用して、特定のノードとタグの入力 xml を解析したいと思います。タグ値が「z」で始まる場合、そのノードを削除したいと思います。(または、このノードなしで新しいファイル xml ファイルを作成します)

参照用にサンプルの xml ファイルを添付しました。最後のノードの表示名が「z*」で始まるため、最後のノードを削除する必要があります。

「zシーフード」

前もって感謝します。

<?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>
4

1 に答える 1

1

この変換( ID ルールのオーバーライド):

<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>

必要な正しい結果が生成されます

<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>
于 2012-07-19T12:42:44.777 に答える