当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用样式表和xsltproc的xslt从xml中删除元素?》经验,为你挑选了1个好方法。

我有很多XML文件,它们具有以下形式:


我想从文件中删除.

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

到目前为止,在脚本中我已经有了包含我想要删除的元素的文件列表,因此单个文件可以用作参数.


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

我想要实现的是删除整个元素"元素",其中(fruit =="apple"&& animal =="cat").在同一文件中有许多名为"元素"的元素,我希望这些元素保留下来.所以




会成为:



Dimitre Nova.. 131

使用最基本的XSLT设计模式之一:"覆盖身份转换 ",只需编写以下内容:



 

    
      
         
      
    

    

请注意第二个模板如何仅为名为"Element"的元素覆盖identity(1st)模板,该元素具有值为"apple"的属性"fruit"和值为"cat"的属性"animal".此模板具有空体,这意味着匹配的元素将被简单地忽略(匹配时不会生成任何内容).

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

... 
    foo...
    
    
    baz...
    foobar...

产生了想要的结果:

... 
    foo...
    
    baz...
    foobar...

可以在此处找到更多使用和覆盖标识模板的代码片段.



1> Dimitre Nova..:

使用最基本的XSLT设计模式之一:"覆盖身份转换 ",只需编写以下内容:



 

    
      
         
      
    

    

请注意第二个模板如何仅为名为"Element"的元素覆盖identity(1st)模板,该元素具有值为"apple"的属性"fruit"和值为"cat"的属性"animal".此模板具有空体,这意味着匹配的元素将被简单地忽略(匹配时不会生成任何内容).

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

... 
    foo...
    
    
    baz...
    foobar...

产生了想要的结果:

... 
    foo...
    
    baz...
    foobar...

可以在此处找到更多使用和覆盖标识模板的代码片段.


尽管我甚至没有问正确的问题,但你已经回答了我应该问的问题!:)
你为什么不把这篇文章标记为正确的答案呢?然后它将从未答复的问题列表中消失.
不得不等到我确认它有效,并且今天没有机会上班.尽管如此,感谢Dimitre.
@Babai,`/*/book [position()= 1或position()= 3]/@*`.在XPath 2.0中:`/*/book [position()=(1,3)]/@*`
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有