使用 XSLT 减少 XML 输出

2023-11-29

如何使用 XSLT,仅从输入 xml 中选择一些 xml 标签到输出 XML? 输入示例:

<Country value="USA">
    <State value="KY>
        <City value="Hebron" />
        <City value="Lexington" />
        <City value="Owensboro" />
        <City value="Jonesville" />
    </State>
    <State value="OH">
         <City value="Cincinnati" />
         <City value="Columbus" />
         <City value="Cleveland" />
         <City value="Jonesville" />
    </State>
    <State value="IN" >
         <City value="Indianapolis" />
    </State>
 </Country>

那么,保留国家/州标签并仅复制希伯伦和辛辛那提?

预期输出:

<Country value="USA">
    <State value="KY>
        <City value="Hebron" />
    </State>
    <State value="OH">
         <City value="Cincinnati" />
    </State>
 </Country>

以下样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="City[not(@value='Hebron' or @value='Cincinnati')]" />
</xsl:stylesheet>

在此输入上:

<Country value="USA">
    <State value="KY">
        <City value="Hebron" />
        <City value="Lexington" />
        <City value="Owensboro" />
    </State>
    <State value="OH">
        <City value="Cincinnati" />
        <City value="Columbus" />
        <City value="Cleveland" />
    </State>
</Country>

产生以下结果:

<Country value="USA">
    <State value="KY">
        <City value="Hebron" />
    </State>
    <State value="OH">
        <City value="Cincinnati" />
    </State>
</Country>

该样式表使用身份转变将除不需要的节点之外的所有节点原封不动地复制到输出。

另一个例子

您可能还想删除任何State没有所需城市的元素。这个样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="City[not(@value='Hebron' or @value='Cincinnati')]"/>
    <xsl:template 
           match="State[not(City[@value='Hebron' or @value='Cincinnati'])]"/>
</xsl:stylesheet>

应用于此输入:

<Country value="USA">
    <State value="KY">
        <City value="Hebron" />
        <City value="Lexington" />
        <City value="Owensboro" />
    </State>
    <State value="OH">
        <City value="Cincinnati" />
        <City value="Columbus" />
        <City value="Cleveland" />
    </State>
    <State value="MO">
        <City value="St. Louis" />
    </State>
</Country>

生产:

<Country value="USA">
    <State value="KY">
        <City value="Hebron" />
    </State>
    <State value="OH">
        <City value="Cincinnati" />
    </State>
</Country>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XSLT 减少 XML 输出 的相关文章

随机推荐

  • Java 准备好的语句未执行

    我创建了一个小型的三层程序 包括 前端 gt servlet gt 数据库 前端我在表单中输入一些详细信息 它们被传递到 servlet 该 servlet 将呈现一些 HTML 并显示输入到表单中的值 同时还调用 DatabaseHelp
  • 根据另一个集合中特定文档的存在情况,将集合中的文档发布到 Meteor 客户端(发布与关系)

    我有两个收藏 优惠 相关字段 id ShareRelations 相关字段 接收者ID and offerId 我只想向登录用户发布已共享给他的优惠 实际上 我是通过使用辅助数组 visibleOffers 来完成此操作 我通过循环每个 S
  • 编码 javascript url 以传递 #(hashtag)

    我将 URL 传递给 PHP 文件 在其中更改一些颜色等 其中一种颜色是 ccc并被传递为 background ccc这破坏了我的 PHP 文件 它停止了我的 GET该主题标签处的参数 之后的所有内容都不会传递 我尝试将我的网址编码为en
  • 反射式 Web 应用程序 (WebIDE)

    Preamble 所以 这个问题已经得到了解答 但由于这是我对该项目的第一个问题 我将继续在我对该项目提出的其他问题中引用它 对于来自另一个问题的任何人 以下是基本想法 创建一个 Web 应用程序 可以使创建其他 Web 应用程序或网站变得
  • 在 Fortran 中查找数组中满足条件的最小值[索引]

    我正在寻找数组中大于某个数字的最小值 我发现这次讨论我不明白 有MINLOC 但看起来它本身并没有达到我想要的效果 尽管我没有解析给定示例中传递给它的参数 也可以使用循环来完成此操作 但可能很笨拙 你可能想要MINVAL 如果你的数组是这样
  • 在处理程序中创建了一个 Promise,但没有从中返回

    我刚刚开始使用 Bluebird Promise 但遇到了一个令人困惑的错误 代码摘要 var jQueryPostJSON function jQueryPostJSON url data return Promise resolve j
  • D3 Y 轴似乎颠倒了

    我正在尝试根据 CSV 文件中的一些数据生成图表 My code
  • 如何检测 Azure 网站上的 HTTPS 重定向?

    根据标题 我有一个 Node js 应用程序 我希望能够检测请求是通过 HTTPS 还是 HTTP 发出 到目前为止我的重定向看起来像这样 Ensure the page is secure or that we are running a
  • 列表中的数据表

    我已经下载了包含在List
  • Java中如何处理关闭应用程序事件?

    拥有一个控制台应用程序 一个接受来自客户端的多个连接的服务器 是否可以在关闭的应用程序上拥有侦听器或事件 在这种情况下 我希望告诉所有连接的客户端在应用程序真正自行关闭之前轻轻断开连接 有什么解决办法吗 谢谢你 您想使用关闭挂钩 Runti
  • 在Win32中,如何改变STATIC文本的颜色?

    我的窗口上有一些黑色的静态文本 我想在运行时使用颜色选择器对话框更改它 我已经成功获得了颜色 现在我只需要更改文字即可 我读过WM CTLCOLORSTATICmessage 是要处理的消息 尽管这似乎仅适用于控件最初绘制到屏幕上时 可以W
  • 更新 Firebase 多位置并出现错误:路径是路径的祖先。迅速

    当我尝试使用以下命令在多个位置更新数据库时 updateChildValues 我收到下面列出的错误 我怎么解决这个问题 由于未捕获的异常 InvalidFirebaseData 而终止应用程序 原因 updateChildValues 对
  • 自定义单元格模板中带有按钮的 UI-Grid - 如何取消行选择事件?

    我正在使用 ui Grid v 3 0 1 我有一个特定列的自定义单元格模板 它在每行中显示一个按钮 我附加了一个 ng click 属性 它调用 appScope 来触发某些操作 一切都很顺利 但是 单击自定义模板按钮也会导致切换相关行的
  • 未找到基表或视图错误

    产品表 public function up Schema create product function Blueprint table table gt increments id table gt string name table
  • 使用 ionic 3 中的 Angularfire2 从 Firestore 获取集合文档的 ID

    这个问题在这里已经有答案了 我正在尝试获取集合的 id 以在离子页面中使用它 这是我的界面 export interface Item categoryOfPost string imageUrl string nameOfPost str
  • 如何使用 Python 3.x 读取和编辑 Google 电子表格?

    我知道我可以使用以下命令阅读和编辑 Google 电子表格gdata 但没有适用于 Python 3 的 gdata 版本 即使我想使用 Python 3 是否有一种 不是很复杂 的方法来编辑 Google 电子表格 我编写了一个替代方案G
  • 如何在 ffmpeg HLS 中启用 cookie

    有人知道如何在 ffmpeg 中启用 cookie 交互吗 我有一个 HLS 流 需要从服务器保存 cookie 但实际上这不会发生 你可以发送标头与 FFmpeg Linux ffmpeg i INPUT headers Cookie l
  • PyQt QLineEdit 与 QValidator

    我的项目中有一个 QLineEdit 我想在 qlineEdit 上使用验证 Create lineEdit itemValue QtWidgets QLineEdit Create objValidator QtGui QDoubleVa
  • 如何逐步安装和使用 joomla rest api

    请帮忙 我想在 joomla 2 5 中使用 REST api 我在 Github 和 techjoomla 上进行了很多搜索并花了很多天 我不明白如何安装 API 扩展或插件并使用它 即使我没有找到任何正确的文档来使用 API 以及从哪里
  • 使用 XSLT 减少 XML 输出

    如何使用 XSLT 仅从输入 xml 中选择一些 xml 标签到输出 XML 输入示例