有人可以解释如何使用XSLT将输入XML转换为下面显示的输出XML。 我需要在XML的子元素中删除没有'Type'元素的'RElement',其值为'Account'。 'RElement'是递归的。
输入XML -
<RElement>
<Type>Group</Type>
<RElement>
<Type>Group</Type>
<RElement>
<Type>Account</Type>
</RElement>
</RElement>
<RElement>
<Type>Group</Type>
<RElement>
<Type>Group</Type>
<RElement>
<Type>Group</Type>
</RElement>
</RElement>
</RElement>
</RElement>
输出XML -
<RElement>
<Type>Group</Type>
<RElement>
<Type>Group</Type>
<RElement>
<Type>Account</Type>
</RElement>
</RElement>
</RElement>
答案 0 :(得分:0)
你可以试试这个:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="RElement[not(.//Type[text() = 'Account'])]" />
</xsl:stylesheet>
基本上它的身份转换为RElement元素的空模板,其后代子元素中没有值为'Account'的'Type'元素。
已编辑添加Ian Robert的空模板,这更好:
<xsl:template match="RElement[not(.//Type = 'Account')]" />