Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用带有样式表和xsltproc的xslt从xml中删除元素?

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

Stack Overflow用户
提问于 2008-11-26 11:24:57
回答 1查看 101.2K关注 0票数 71

我有很多XML文件,它们的形式如下:

代码语言:javascript
运行
AI代码解释
复制
<Element fruit="apple" animal="cat" />

我想把它从文件中删除。

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

至此,在脚本中,我已经有了包含我希望删除的元素的文件列表,因此可以将单个文件用作参数。

编辑:这个问题最初是缺乏意图的。

我想要实现的是删除整个元素" element“where (猫”fruit==“&& animal=="cat")。在同一文档中有许多名为"Element“的元素,我希望这些元素能够保留下来。所以

代码语言:javascript
运行
AI代码解释
复制
<Element fruit="orange" animal="dog" />
<Element fruit="apple"  animal="cat" />
<Element fruit="pear"   animal="wild three eyed mongoose of kentucky" />

会变成:

代码语言:javascript
运行
AI代码解释
复制
<Element fruit="orange" animal="dog" />
<Element fruit="pear"   animal="wild three eyed mongoose of kentucky" />
EN

回答 1

Stack Overflow用户

发布于 2019-03-08 21:53:58

@Dimitre Novatchev给出的答案当然既正确又优雅,但有一个泛化( OP没有询问):如果您想要过滤的元素也有您想要保留的子元素或文本,该怎么办?

我认为这个小的变化涵盖了这种情况:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="2.0">

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <!-- drop DropMe elements, keeping child text and elements -->
    <xsl:template match="DropMe">
        <xsl:apply-templates/>
    </xsl:template>

</xsl:stylesheet>

要指定其他属性等,匹配条件可能很复杂,如果您要删除其他内容,则可以使用多个这样的模板。

所以这个输入:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<mydocument>
    <p>Here's text to keep</p>
    <p><DropMe>Keep this text but not the element</DropMe>; and keep what follows.</p>
    <p><DropMe>Also keep this text and <b>this child element</b> too</DropMe>, along with what follows.</p>
</mydocument>

生成以下输出:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?><mydocument>
    <p>Here's text to keep</p>
    <p>Keep this text but not the element; and keep what follows.</p>
    <p>Also keep this text and <b>this child element</b> too, along with what follows.</p>
</mydocument>

归功于XSLT Cookbook

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/321860

复制
相关文章
【说站】python中XML删除元素
以上就是python中XML删除元素的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/24
1.1K0
如何从 Python 列表中删除所有出现的元素?
在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍如何使用简单而又有效的方法,从 Python 列表中删除所有出现的元素。
网络技术联盟站
2023/06/01
14.7K0
如何优雅的从Array中删除一个元素
从JavaScript数组中删除元素是开发人员经常遇到的常见编程范例。与许多JavaScript一样,这并不像它应该的那么简单。
Jean
2018/12/21
10.5K0
删除数组中某个指定元素的值_如何删除数组中的元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169504.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
14K0
如何从 Java 的 List 中删除第一个元素
在这个实例中,我们将会演示如何删除在 Java 中定义的 List 的第 1 个元素。
HoneyMoose
2022/04/16
12.1K0
如何从 Java 的 List 中删除第一个元素
vue删除数组中指定元素_如何删除数组中的元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169518.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
8.5K0
libexslt库将XML转换为JSON
最近在一个 C 程序中碰到需要将 XML 数据转换为 JSON 数据的问题,多番查找几种方法,觉得此程序刚好用到了 Linux 下的 libexslt XSLT 库,因此想直接通过 XSLT 将 XML 转为 JSON 数据。
随心助手
2019/10/15
4.6K0
XML元素和属性
默认情况下,next()方法不检查是否存在与标记为必需的属性相对应的元素和属性。要使读取器检查此类元素和属性是否存在,请在调用Next()之前将读取器的CheckRequired属性设置为1。出于兼容性原因,此属性的默认值为0。
用户7741497
2022/07/04
1.5K0
Java中如何优雅地删除List中的元素
在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素的,今天我来教大家三种方式。
翎野君
2023/05/12
3.3K0
Java中如何优雅地删除List中的元素
es6删除数组指定元素_如何删除数组中的元素
如图,这个数组里面有三个元素,现在要删掉这个id是24的元素,那我们代码就应该这么写
全栈程序员站长
2022/09/22
7.3K0
es6删除数组指定元素_如何删除数组中的元素
怎样从数组中删除给定元素_java数组包含某个元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169528.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
5.5K0
怎样从数组中删除给定元素_java数组包含某个元素
Nmap快速进阶指南
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及重大损失,均由使用者本人负责,本网站与作者Tommonkey不为此承担任何责任
Tommonkey
2023/03/20
7290
Nmap快速进阶指南
删除链表中的元素
题意 删除链表中等于给定值 val 的所有节点。 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。 思路 只需要将一个指针,遍历链表,当链表中有元素与 val 值相同时,让当前节点的 next 节点直接指向 当前节点的 next.next 节点即可。 代码实现 /** * Definition for singly-linked list. * public class ListNode { * int val;
一份执着✘
2018/06/04
2.5K0
Java 如何删除 List 中的重复元素
在有时候,我们希望 List 集合中的内容是不重复的,所以我们需要对 List 进行一次去重。
HoneyMoose
2021/01/30
4.9K0
Java 如何删除 List 中的重复元素
java数组删除元素_java中删除 数组中的指定元素方法[通俗易懂]
java中删除 数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除 数组中的指定元素的例子。
全栈程序员站长
2022/09/22
9.1K0
如何从列表中获取元素
观察URAM的物理管脚,不难发现A/B端口都有相应的地址、使能、读写控制信号。与BRAM不同的是URAM的读写使能信号是同一个管脚RDB_WR_A/B,其为0时执行读操作,为1时执行写操作,这意味着一旦A/B端口独立,同一端口的读写操作就无法同时发生,因此,如果采用上一篇文章中介绍的方法将其配置为两个独立的单端口RAM,其读写行为与常规的单端口RAM是不同的,进一步而言,此时的读写行为类似于NO_Change模式。
Lauren的FPGA
2019/10/30
19.5K0
一日一技:使用切片从列表中删除元素
列表的切片操作相信大家都已经非常熟悉了。例如有一个列表: [1,2,3,4,5,6,7,8,9,0]
青南
2019/05/14
3.9K0
【Golang】golang中map元素的删除和清空
可以直接赋值一个新的map过去就可以了,Go语言中并没有为 map 提供任何清空所有元素的函数、方法,清空 map 的唯一办法就是重新 make 一个新的 map,不用担心垃圾回收的效率,Go语言中的并行垃圾回收效率比写一个清空函数要高效的多。
唯一Chat
2022/07/24
2.1K0
点击加载更多

相似问题

WEB播放器播放按钮图标如何更换?

0243

Web超级播放器中间的播放按钮是腾讯云的,该如何替换?

0220

iOS 系统在微信下点击播放按钮,视频黑屏无反应,点暂停再点播放调用了Safari的视频播放器播放?

1825

web超级播放器的播放按钮样式目前是腾讯云的样式,是否可以修改?

2620

iOS播放器暂停了,视频缓冲还在走,怎么暂停缓冲?

2932
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档