XSLT: 不起作用

2024-01-01

我的应用程序中有一个 servlet 过滤器,它拦截所有传入的请求,并尝试从传入的 XML 中去除空格,并将生成的“干净”XML 写入响应。我正在使用 XSLT 来实现这一点。请参阅下面的 XSLT:

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

<xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>

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

然而,这并没有按预期工作。生成的 XML 与原始 XML 相同(尽管在样式表中使用了

请帮助我解决这个问题。

Regards,
- 阿什什


目前尚不清楚您打算获得什么输出以及您期望从中获得什么xsl:strip-whitespace首先。但需要注意的一件事是它不会剥离all空白,但仅限于“通常”规则下被视为无关紧要的空白。特别是,根据 XSLT 1.0 规范:

文本节点永远不会被删除,除非它只包含空白字符。

因此,例如:

<foo>
  <bar>   </bar>
</foo>

将被精简为:

<foo><bar/></foo>

因为它有 3 个纯空白文本节点(之后<foo>和之前<bar>, 之间<bar> and </bar>, 之后</bar>和之前</foo>).

另请注意,因为您有<xsl:output indent="yes">在你的样式表中,它最终会被转换为:

<foo>
   <bar/>
<foo>

在输出中。

另一方面,这个:

<foo>
   text1
   <bar>  text2  </bar>
   text3
</foo>

根本不会被剥离,因为它包含的所有文本节点都不是纯粹的空白节点。

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

XSLT: 不起作用 的相关文章

随机推荐

  • asp .net 2.0 上的最大查询字符串长度

    我正在研究 ASP NET 版本 2 0 和 IIS 6 我通过调用其 URL 并向其传递查询字符串来从主页调用弹出的 aspx 页面 对于特定情况 我的查询字符串的长度超过 2000 个字符 因此 弹出屏幕第一次打开时效果很好 但每当该弹
  • 当有超过 n 个查询时,如何记录“show processlist”?

    我们的 mysql 进程有时会积压并且进程开始排队 我想通过在缓慢的时间记录进程列表来调试发生这种情况的时间和原因 我想跑show full processlist 通过 cron 作业并将输出保存到文本文件 如果有多个 50返回行 你能为
  • UICollectionView - 图像是随机设置的

    我在我的应用程序中使用collectionView 我正在 didSelect 委托中为单元格背景视图设置图像 但是当我选择一个单元格索引路径时 图像将设置为 3 个单元格索引路径 当我滚动 collectionView 时 图像会随机更改
  • JavaFX 2.x:将鼠标单击坐标转换为 XYChart 轴值

    在 JavaFX 2 x 中 我使用 XYChart 并且希望当鼠标在图表上移动时显示图表的 X Y 轴坐标值 我在图表上设置了一个事件处理程序来处理 setOnMouseMoved 事件 但是 我不确定如何将 MouseEvent 的 g
  • MIPS汇编中$是什么意思?

    什么是 在 MIPS 汇编语言中是什么意思 举个例子 Add 28 R4 R3 表达式中的美元符号是什么 在汇编程序中 符号 通常表示两种不同的含义 数字前缀表示该数字以十六进制书写 本身是一个数值表达式 其计算结果为 当前位置 即组装下一
  • 如何使用 boto3 客户端删除仍然可用的 HIT

    我有一些已发布的 HIT 可供工作人员使用 现在我想删除它们 尽管它们还没有被工作人员完成 根据此文档 这是不可能的 https boto3 amazonaws com v1 documentation api latest referen
  • React 功能组件:如何从外部访问变量 useEffect()

    我已经简化了下面的问题 我正在使用useEffect确保 dom 在选择项目之前已渲染 这非常有效 并且在尝试获取这些元素之前不需要超时 但是如果我想在另一个组件中使用这些值 如何访问它们 The printAll 函数找不到变量 impo
  • Java 泛型方法签名中的类型不匹配

    我有一个Executor调用接口实例的类IService
  • 使用 Android 的 BROTHER SDK 通过 WIFI 打印时出现 ERROR_WRONG_LABEL

    我有 Brother QL 710W 标签打印机 我尝试使用 Brother 的 SDK 通过 WIFI 进行打印 但每次都会收到 ERROR WRONG LABEL 错误 我努力了 尝试使用 Android Brother Sdk 进行标
  • 来自:“1 小时前”,至:timedelta + 准确度

    有没有 逆转人性化 时代的功能 例如 给定 字符串 1分钟前 7小时前 5天前 2个月前 可以返回 对伪代码表示歉意 datetime now 时间增量 1 分钟 精度 60 秒 datetime now 时间增量 7 小时 精度 1 小时
  • 解决歧义

    我有一个带有 3 个创建方法重载的控制器 public ActionResult Create public ActionResult Create string Skill int ProductId public ActionResul
  • 如何使用 C++ 将网站设置为 IE、Firefox、Chrome 和 Safari 的主页?

    有没有办法通过 C 或 C 将 google com 这样的网站设置为主页 如何 不确定你的动机是什么 但我不认为这是我希望我的系统上的任何代码从我的手下出发的事情 这听起来像是广告软件 恶意软件会对您的祖父母所做的事情 一旦设置 他们就不
  • 在 localhost 中使用 facebook 登录

    我正在做一个项目 需要使用facebook API作为用户登录 该文档清楚地说明了使用facebook登录的登录按钮的用法 但是 当我在本地主机上测试该按钮时 它没有给我任何信息 没有错误页面 没有弹出窗口 我正在使用 xampp 进行本地
  • 如何指定特定时区的“今天开始”?

    我有一个带有 时间戳与时区 列的表 我想找到时间戳早于今天的所有行 其中 今天 是在特定时区确定的 我知道如何使用at time zone将文字时间戳解释为处于某个特定时区 并且我知道如何使用date trunc以获得这一天的开始 但我不知
  • 如何在 HTML 中调用外部 JavaScript 函数

    我有一小块代码似乎无法工作 我正在构建一个网站并第一次使用 JavaScript 我的 JavaScript 代码位于外部文件 Marq Msg js 中 如下所示 var Messages new Array Messages 0 Thi
  • javascript中的赋值问题[重复]

    这个问题在这里已经有答案了 这是我正在尝试的代码 我唯一的问题是为什么我的代码没有在 projectAreaContextId 中分配 y 的值 编辑1 我已经更正了一些内容 var xhttp new XMLHttpRequest xht
  • Jquery无法在回调函数中访问$(this)

    我正在创建一个插件 但它无法访问 this 我的插件的简单概述是 function fn myPlugin function options callback return this each function this click fun
  • 使用结构时出现编译器错误 C2143

    我正在使用 Visual C 编译一个简单的 c 并使用 Compile as C Code TC 我收到这个编译器错误 错误 C2143 语法错误 缺少 在 输入 之前 在需要简单结构的行上 struct foo test 使用结构体的
  • 如何让 PyC​​harm 更快/更轻? [复制]

    这个问题在这里已经有答案了 我真的很喜欢 PyCharm 的想法并且很想使用它 然而 它会消耗计算机的处理能力和延迟 这是一个很大的缺点 在不久的将来 我将开设一门 Python 入门课程 并建议学生安装 PyCharm 因为它似乎是最友好
  • XSLT: 不起作用

    我的应用程序中有一个 servlet 过滤器 它拦截所有传入的请求 并尝试从传入的 XML 中去除空格 并将生成的 干净 XML 写入响应 我正在使用 XSLT 来实现这一点 请参阅下面的 XSLT