如何从样式表和xsltproc使用xslt从xml中移除元素?

我有很多的XML文件有一些forms的东西:

<Element fruit="apple" animal="cat" /> 

我想从文件中删除。

使用XSLT样式表和Linux命令行实用程序xsltproc,我该怎么做?

通过脚本中的这一点,我已经有了包含我希望删除的元素的文件列表,所以单个文件可以用作参数。


编辑:这个问题原本是缺乏意图。

我试图实现的是去除整个元素“元素”,其中(水果==“苹果”&&动物==“猫”)。 在同一个文档中有很多元素叫“元素”,我希望这些元素保持不变。 所以

 <Element fruit="orange" animal="dog" /> <Element fruit="apple" animal="cat" /> <Element fruit="pear" animal="wild three eyed mongoose of kentucky" /> 

会成为:

 <Element fruit="orange" animal="dog" /> <Element fruit="pear" animal="wild three eyed mongoose of kentucky" /> 

使用最基本的XSLTdevise模式之一:“重写身份转换 ”,只会写下如下内容:

 <xsl:stylesheet version =“1.0”
 的xmlns:XSL = “http://www.w3.org/1999/XSL/Transform”>

  <xsl:output omit-xml-declaration =“yes”/>

     <xsl:template match =“node()| @ *”>
      的<xsl:拷贝>
          <xsl:apply-templates select =“node()| @ *”/>
       </ XSL:复制>
     </ XSL:模板>

     <xsl:template match =“元素[@ fruit ='apple'and @ animal ='cat']”/>
 </ XSL:样式>

请注意第二个模板如何replace名为“Element”的元素的identity(1st)模板,该元素的属性为“fruit”,值为“apple”,属性“animal”的值为“cat”。 这个模板有空的主体,这意味着匹配的元素被忽略(匹配时不会产生任何结果)。

将此转换应用于以下源XML文档时:

 <文档> ... 
     <Element name =“same”> foo </ Element> ...
     <元素水果=“苹果”动物=“猫”/>
     <元素水果=“梨”动物=“猫”/>
     <Element name =“same”> baz </ Element> ...
     <Element name =“same”> foobar </ Element> ...
 </ DOC>

想要的结果是:

 <文档> ... 
     <Element name =“same”> foo </ Element> ...
     <元素水果=“梨”动物=“猫”/>
     <Element name =“same”> baz </ Element> ...
     <Element name =“same”> foobar </ Element> ...
 </ DOC>

更多使用和覆盖身份模板的代码片段可以在这里find。