假设我有以下 XML:
<Zoo>
<Keepers>
<Keeper name="Joe" manager="Miles" />
<Keeper name="Bob" manager="Karen"/>
</Keepers>
<Animals>
<Animal type="tiger" keeper="Joe"/>
<Animal type="lion" keeper="Joe"/>
<Animal type="giraffe" keeper="Bob"/>
</Animals>
</Zoo>
我基本上想使用 Keeper.name 作为变量,然后将模板应用于匹配的 Animal 节点,其中 Keeper.name = Animal.keeper。
这是否可以使用应用模板或某种其他类型的 XSL 语法?
在我的示例中,我想删除由 Miles 管理的所有 Keepers 并删除由 Miles 管理的 Keepers 保留的所有 Animal 节点,因此我将应用空白模板。
这是我的 sudo XSL,它不太工作:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@manager='Miles']">
<xsl:apply-templates select="/Zoo/Animals/Animal[@keeper=current()/@name]"/>
<!-- apply a blank template to this Keeper -->
</xsl:template>
<xsl:template match="Animal">
<!-- apply a blank template to this Animal -->
</xsl:template>
我想要的输出 XML 如下:
<Zoo>
<Keepers>
<Keeper name="Bob" manager="Karen"/>
</Keepers>
<Animals>
<Animal type="giraffe" keeper="Bob"/>
</Animals>
</Zoo>
谢谢!