2009-07-17 9 views
3

親ノードを削除しますが、XMLドキュメント全体をコピーします。しかし、この親ノードには、私が保持したい子があります。xsl:親ノードを除くxml全体をコピーしますが、その子ノードは保持します

削除するノードは<LoginID>であり、保持する子ノードは<PAN>です。

<InqRs> 
    <LoginID>    <!-- remove --> 
     <PAN>4506445</PAN> <!-- keep --> 
    </LoginID> 
    <RqUID>93</RqUID> 
    <Dt>90703195116</Dt> 
    <CaptureDate>704</CaptureDate> 
    <ApprovalCode>934999</ApprovalCode> 
    <StatusCode>000</StatusCode> 
    <List> 
     <Count>9</Count> 
     <AddDataFlag>N</AddDataFlag> 
     <Use>C</Use> 
     <DetRec> 
      <ID>007237048637</ID> 
      <Type1>62</Type1> 
      <Qual /> 
      <ID>0010</ID> 
      <Status>1</Status> 
      <InqFlag>Y</InqFlag> 
     </DetRec> 
    </List> 
</InqRs> 
+0

またはそれを強調表示し、エディタ上のコードボタンを使用します(バイナリのように見えるものを...) – beggs

+0

なぜあなたは正しくXMLソースコードを表示する私の編集を嫌ったのですか? –

+0

間違いでした。私はいくつかのブラウザを開いていて、もう一方は適切なフォーマットではないXMLを示しました。私はサイトに新しいので、私は再び何かが間違っていると思う。 – user139873

答えて

1
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="LoginID"> 
    <xsl:apply-templates select="PAN"/> 
    </xsl:template> 
    <xsl:template match="*"> 
    <xsl:copy><xsl:apply-templates/></xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 
+0

xsl:copy also copy attributes?私はすぐに仕様を持っていません... – Boldewyn

+0

いいえ、それはありません。しかし、OPの文書には属性がないので、これは問題ありません。 –

+0

テンプレートを(申し訳ありませんが、コメントの書式設定なしに)変更すると、属性もコピーされます。 mkoeller

2

そのコードから、あなたはノードInqRsを削除したい場合は、単に次のxsl適用されます。

<xsl:output method="xml"/> 
<xsl:template match="node()"> 
    <xsl:copy> 
     <xsl:copy-of select="@*"/> 
     <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="PAN"> 
    <LoginID> 
      <xsl:copy-of select="."/> 
    </LoginID> 
</xsl:template> 

を私はこのことを願っています。この

<InqRs> 
    <LoginID> 
     <PAN> 4506445 </PAN>   
    </LoginID> 
    <RqUID>93</RqUID> 
    <Dt>90703195116</Dt> 
    <CaptureDate>704</CaptureDate> 
    <ApprovalCode>934999</ApprovalCode> 
    <StatusCode>000</StatusCode> 
    <List> 
     <Count>9</Count> 
     <AddDataFlag>N</AddDataFlag> 
     <Use>C</Use> 
     <DetRec> 
      <ID>007237048637</ID> 
      <Type1>62</Type1> 
      <Qual/> 
      <ID>0010</ID> 
      <Status>1</Status> 
      <InqFlag>Y</InqFlag> 
     </DetRec> 
    </List> 
<InqRs> 

のようなものを取得しますあなたを助ける

+0

ありがとうございました。 – user139873

7

このXSLのショーuldは必要があります。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
<xsl:template match="*"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="InqRs/LoginID"> 
     <xsl:copy-of select="@*|node()" />  
    </xsl:template> 
</xsl:stylesheet> 
関連する問題