0

有人可以解释我如何使用 XSLT 将输入 XML 转换为如下所示的输出 XML。我需要删除 XML 中的“RElement”,该元素在其后代子元素中没有“Type”元素且值为“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>
4

1 回答 1

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 元素的空模板进行身份转换,在其后代子元素中没有“类型”元素和值“帐户”。

编辑添加伊恩罗伯特的空模板,这是更好的:

<xsl:template match="RElement[not(.//Type = 'Account')]" />
于 2013-10-04T10:57:41.627 回答