当父节点具有相同名称的子节点时,正在删除该父节点



我有以下输入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>

您可以尝试使用以下模板:

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

相关内容

  • 没有找到相关文章