2009-07-17 79 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 2009-07-17 02:47:01

+0

你爲什麼不喜歡我的編輯正確顯示XML源代碼? – 2009-07-17 03:04:19

+0

這是一個錯誤。我打開了幾個瀏覽器,其中一個以正確的格式顯示XML,另一個沒有顯示。我是這個網站的新手,所以我覺得我又犯了一些錯誤。 – user139873 2009-07-17 03:39:39

回答

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

我希望這幫你

7

這個XSL笑這是必要的。

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