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

Xml 仅转换指定的元素,删除其余元素,xml,xslt,copy,identity,Xml,Xslt,Copy,Identity,我正在尝试开发一个XSLT样式表,它将通过以下方式将xml转换为另一个: 默认情况下,样式表不应为每个元素显示任何内容(甚至不包括文本) 如果元素有显式模板匹配,则复制该元素、其属性及其所有子元素(及其属性) 换言之,标识只转换明确指定的元素。好吧,对于大多数情况,什么也不做,肯定是这样的: <xsl:template match="/*"> <xsl:copy> <xsl:apply-templates select="*"/> </x

我正在尝试开发一个XSLT样式表,它将通过以下方式将xml转换为另一个:

  • 默认情况下,样式表不应为每个元素显示任何内容(甚至不包括文本)
  • 如果元素有显式模板匹配,则复制该元素、其属性及其所有子元素(及其属性)
    换言之,标识只转换明确指定的元素。

    好吧,对于大多数情况,什么也不做,肯定是这样的:

    <xsl:template match="/*">
      <xsl:copy>
        <xsl:apply-templates select="*"/>
      </xsl:copy>
    </xsl:template>
    <xsl:template match="*">
        <xsl:apply-templates select="*"/>
    </xsl:template>
    
    
    
    然后为您想要的内容添加匹配项:

    
    

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

    谢谢Marc,您的答案是有意义的。是的,这是一个奇怪的要求,但我在这里尝试的是控制对xml文档的访问,用户只能看到管理员明确允许的元素。用户将看到原始XML格式的文件。希望这是有道理的。我仍然需要做的是在任何情况下都显示根元素(对于根元素,不显示子元素)。很抱歉,在原来的帖子中忘了提到这一点阿利特很喜欢马克。这正是我想要的。
    <xsl:template match="Foo | Bar">
        <xsl:copy-of select="."/>
    </xsl:template>