2016-04-20 92 views
0

孩子,我有以下輸入XML:刪除父節點時,它具有相同名稱

<DST> 
    <PQ> 
     <hostAddress>10.193.245.27</hostAddress> 
    </PQ> 
    <AWDSRVRunStoredProcedure xmlns:lxslt="http://xml.apache.org/xslt"> 
     <hostAddress>10.193.245.27</hostAddress> 
     <storedprocedures>storedprocedurestwo</storedprocedures> 
    </AWDSRVRunStoredProcedure> 
    <DST> 
     <test>I want this</test> 
     <PQ> 
     <hostAddress>10.193.245.27</hostAddress> 
     </PQ> 
     <AWDSRVRunStoredProcedure xmlns:lxslt="http://xml.apache.org/xslt"> 
     <hostAddress>10.193.245.27</hostAddress> 
     <storedprocedures>storedproceduresone</storedprocedures> 
     </AWDSRVRunStoredProcedure> 
     <PQClaimSystemRequest> 
     <request>request</request> 
     </PQClaimSystemRequest> 
    </DST> 
</DST> 

我想刪除第一個根節點<DST>,它是除了第二第二<DST>孩子。所以,我的結果xml應該如下。

<DST> 
     <test>I want this</test> 
     <PQ> 
     <hostAddress>10.193.245.27</hostAddress> 
     </PQ> 
     <AWDSRVRunStoredProcedure xmlns:lxslt="http://xml.apache.org/xslt"> 
     <hostAddress>10.193.245.27</hostAddress> 
     <storedprocedures>storedproceduresone</storedprocedures> 
     </AWDSRVRunStoredProcedure> 
     <PQClaimSystemRequest> 
     <request>request</request> 
     </PQClaimSystemRequest> 
    </DST> 

回答

1

您可以嘗試使用以下模板:

<xsl:template match="DST[DST]"> 
    <xsl:copy-of select="DST"/> 
</xsl:template> 

或者,如果該規則適用於所有元件(未具體命名DST元素):

<xsl:template match="*[*/name()=name()]"> 
    <xsl:copy-of select="*[name()=current()/name()]"/> 
</xsl:template> 
相關問題