2016-09-14 22 views
0

xslの助けを借りてxml内の子要素、ノード、および親要素を削除する方法。xslの助けを借りてxml要素を削除するには?

ここはmy xml codeです。

<?xml version="1.0" encoding="UTF-8"?> 
<Checkpax xmlns="http://xml.api.com/test"> 
    <customerLevel> 
     <surname>MUKHERJEE</surname> 
     <type>A</type> 
     <gender>M</gender> 
     <otherPaxDetails> 
      <givenName>JOY</givenName> 
      <title>MR</title> 
      <age>11</age> 
     </otherPaxDetails> 
     <otherPaxDetails> 
      <title>MR</title> 
     </otherPaxDetails> 
     <staffDetails> 
      <staffInfo/> 
      <staffCategoryInfo> 
       <attributeDetails> 
        <attributeType>NA</attributeType> 
       </attributeDetails> 
      </staffCategoryInfo> 
     </staffDetails> 
     <productLevel> 
      <legLevel> 
       <legLevelIndicator> 
        <statusDetails> 
         <indicator>abc</indicator> 
         <action>1</action> 
        </statusDetails> 
       </legLevelIndicator> 
      </legLevel> 
     </productLevel> 
     <CustomerLevel> 
      <legLevel> 
       <legLevelIndicator> 
        <statusDetails> 
         <indicator>cde</indicator> 
         <action>1</action> 
        </statusDetails> 
       </legLevelIndicator> 
      </legLevel> 
     </CustomerLevel> 
    </customerLevel> 
</Checkpax> 

期待される出力のxml:

<Checkpax xmlns="http://xml.api.com/test"> 
    <paxDetails> 
     <surname>MUKHERJEE</surname> 
     <gender>M</gender> 
    </paxDetails> 
    <otherPaxDetails> 
     <title>MR</title> 
     <age>11</age> 
    </otherPaxDetails> 
    <otherPaxDetails> 
     <title>MR</title> 
    </otherPaxDetails> 
    <staffDetails> 
     <staffCategoryInfo> 
      <attributeDetails> 
       <attributeType>NA</attributeType> 
      </attributeDetails> 
     </staffCategoryInfo> 
    </staffDetails> 
    <legLevelIndicator> 
     <statusDetails> 
      <indicator>abc</indicator> 
     </statusDetails> 
    </legLevelIndicator> 
    <CustomerLevel> 
     <legLevel> 
      <legLevelIndicator> 
       <indicator>cde</indicator> 
       <action>1</action> 
      </legLevelIndicator> 
     </legLevel> 
    </CustomerLevel> 
</Checkpax> 

私は私の端から試してみましたXSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://xml.api.com/test" 
    xmlns:ns0="http://xml.api.com/test" 
    exclude-result-prefixes="ns0"> 
    <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> 

    <!-- Apply all child nodes; don't copy the element itself --> 
    <xsl:template match="ns0:customerLevel| ns0:customerDetails| ns0:paxDetails"> 
    <xsl:apply-templates/> 
    </xsl:template> 

</xsl:stylesheet> 

は親切に期待されるのxml output.iを取得するためのXSLスタイルシートが知らない示唆します要素を削除する方法をremianing。また、これはxslでxmlの要素の削除を探している多くの人々のために多くを助けるでしょう。

<xsl:template match="ns0:productLevel | ns0:legLevel"> 
    <xsl:apply-templates/> 
</xsl:template> 

これはproductLevellegLevelラッパーを削除し、staffDetailsの兄弟であることをlegLevelIndicatorを高めます:

答えて

0

AFAICT、2番目のテンプレートがあることが必要です。


otherPaxDetails

ageに一致テンプレート追加私 下<age>11</age>タグを削除する方法をいくつかの提案を与える:あなたは他のを持っている可能性がある場合

<xsl:template match="ns0:age"/> 

を同じ名前の要素、次に狭い要素マッチパターンWN:

<xsl:template match="ns0:otherPaxDetails/ns0:age"/> 
+0

くれotherPaxDetails要素の下にタグを削除する方法をいくつかの提案を与える@ michael.hor257k – sathya

+0

私のポストに編集を参照してください@vidya。 –

+0

はいこれは役に立ちます。私のために働く。私はそれをマークします。@ michael.hor257k – sathya

関連する問題