只转换指定的元素,删除其余元素

时间:2009-05-02 20:50:04

标签: xml xslt copy identity

我正在尝试开发一个XSLT样式表,它将通过保持视图将xml转换为另一个:

  1. 默认情况下,样式表不应为每个元素显示任何内容(甚至不显示文本)。
  2. 如果元素有明确的模板匹配,则复制该元素,它的属性及其所有子元素(及其属性)。
  3. 换句话说,identity仅转换显式指定的元素。

1 个答案:

答案 0 :(得分:4)

好吧,对大多数人来说什么都不做,肯定是这样的:

<xsl:template match="/*">
  <xsl:copy>
    <xsl:apply-templates select="*"/>
  </xsl:copy>
</xsl:template>
<xsl:template match="*">
    <xsl:apply-templates select="*"/>
</xsl:template>

然后为想要的内容添加匹配项:

<xsl:template match="Foo | Bar">
    <xsl:copy-of select="."/>
</xsl:template>

然而,它似乎是非常不寻常的要求。通常,您只需使用通过xml知识导航到已知内容的匹配项。