首页 > 解决方案 > 使用 XSLT 删除项目

问题描述

所以我已经在互联网上搜索了几天,似乎找不到任何特定于我的问题的东西。当我收到匹配项时,我需要使用 XSLT 转换删除一个项目。我有一个 XPath 表达式,它比较数据库提取和 API 提取并识别两者之间的匹配。我正在尝试使用匹配项并将它们从整个 API 提取中删除。如果我错过了任何需要的信息,我深表歉意,我对 XSLT 还是很陌生。

当前的 XML 格式:

<names>
  <name>one</name>
  <name>two</name>
  <name>three</name>
  <name>four</name>
</names>

所需的 XML 输出:

<names>
  <name>one</name>
  <name>two</name>
  <name>four</name>
</names>

在这种情况下,假设我收到了“三”的匹配,XSLT 转换将从 XML 中删除“三”。

标签: xmlxpathtransform

解决方案


如果您想避免编写 XSL 程序的麻烦,假设xmlstarlet已安装在您的系统上并且您的 XML 文件被调用names.xml,您可以发出:

xmlstarlet edit --delete '//name[text() = "three"]' names.xml

推荐阅读