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