XSLT副本 - 如何在通过XSL复制时跳过子节点:copy-of

abh*_*tti 4 xslt

复制输入问题:

<Rel>
    <IRel UID1="3a4d1d2909d0" UID2="35fe61082294" DefUID="AssetSupplier" />
    <IObject UID="3a4d1d2909d0.AssetSupplier.35fe61082294" />
    <SPXSupplier>
        <ISPFOrganization  />
        <ISPFAdminItem />
        <IObject UID="b73ebb87-cd36-4c25-b9ed-35fe61082294"
                 Description="local supplier made in form (10C)"
                 Name="CASTROL1200" />
        <ISupplierOrganization />
    </SPXSupplier>
</Rel>
Run Code Online (Sandbox Code Playgroud)

输出:我只想在输出中跳过SPXSupplier及其子节点

<Rel>
    <IRel UID1="3a4d1d2909d0" UID2="35fe61082294" DefUID="AssetSupplier" />
    <IObject UID="3a4d1d2909d0.AssetSupplier.35fe61082294" />
</Rel>
Run Code Online (Sandbox Code Playgroud)

目前我正在使用这个副本复制所有的东西,包括孩子, <xsl:copy-of select="self::node()"/>

我只希望<Rel>,<IRel><IObject>标签.排除其他东西.

Mic*_*Kay 6

这是亚历克斯答案的改进.

<xsl:template match="SPXSupplier"/>

<xsl:template match="*">
    <xsl:copy>
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

SPXSupplier的空模板意味着当您点击其中一个元素时,不会处理该元素下面的子树.我还使用了一种无条件复制属性的身份模板版本,效率更高.