XSLT:删除多余的空白字符,保留节点

2023-12-04

所以我的问题是这样的。我有一个在很多地方使用的转换文档,并且通常处理许多小型格式转换。在一种特定情况下,我需要从结果中删除空格。输出看起来像这样:

'\n         某事非常重要,带有上标注释1\n      '

我尝试过以下变体:

<xsl:template match="no_whitespace">
    <xsl:variable name="result">
        <xsl:apply-templates/>
    </xsl:variable>
    <xsl:copy-of select="normalize-space($result)"/>
</xsl:template>

但子节点已从输出中删除。我必须非常小心,不要设置任何通用模板,如“text()”,因为它会干扰转换的一般处理。看来我在这里遗漏了一些明显的东西。

编辑:尝试按照 Stefan-Hegny 的建议编写身份转换。

<xsl:template match="title_full">
    <xsl:apply-templates mode="stripwhitespace"/>
</xsl:template>

<xsl:template match="text()" mode="stripwhitespace">
    <xsl:value-of select="normalize-space(translate(., '\n', ''))"/>
</xsl:template>

<xsl:template match="/ | @* | *" mode="stripwhitespace">
    <xsl:apply-templates select="."/>
</xsl:template>

这解决了我的问题,即删除标签最高级别的空格和换行符,然后允许转换正常进行。对于这个含糊不清的问题表示歉意,并感谢您的帮助。

编辑第二个:“翻译”的使用并不像我预期的那样工作,它逐个字符地工作。我使用了替换子字符串的转换。


当你使用normalize-space那么仅使用片段的文本值,因此子节点被剥离。你必须把normalize-space也到子节点的模板中(那些由您应用的<xsl:apply-templates/>

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

XSLT:删除多余的空白字符,保留节点 的相关文章

随机推荐

  • Android 蓝牙连接另一个蓝牙设备

    我正在做基于蓝牙的应用程序 我想连接其他设备 例如诺基亚设备和打印机 我参考了android蓝牙文档http developer android com guide topics connectivity bluetooth html 它演
  • * 和 + 正则表达式之间的区别

    谁能告诉我两者之间的区别 and 下例中的运算符 lt gt lt gt 它们每个都是量词 星号量词 表示前面的表达式可以匹配零次或多次 就像 0 而加量词 表示前面的表达式必须匹配至少一次或多次 并且它与 1 回顾一下 a gt a 0
  • 后台工作者如何

    我正在尝试在我的程序中实现后台工作人员 这样当我运行程序并开始检索我需要的数据时它就不会冻结 我不太清楚后台工作者是如何工作的 后台工作人员是在后台运行的线程 它们在不中断 阻塞主线程的情况下工作 您可以阅读更多内容here 简而言之 在
  • 将模块导入 Python Azure Function

    我正在尝试创建一个简单的 Azure 函数 它接收 HTTP 事件 获取该请求正文中的 JSON 对象 并将该对象保存为 CosmosDB 集合中的文档 然而 我似乎对导入 python 模块很着迷 init py import json
  • 如何为 play2 的表单定义 StopOnFirstFail dsl?

    在这个问题中 如果一个表单字段有多个验证器 如何让play一一验证它们 而不是全部验证 Julien 给了我一个名为stopOnFirstFail解决我的问题 def stopOnFirstFail T constraints Constr
  • 使用AWS SES从node.js上传邮件中的.jpg图像附件

    下面是来自的代码https github com andrewpuch aws ses node js examples其中有一个发送示例和带有附件的电子邮件 我修改了代码以从 aws s3 获取图像文件并将其作为附件以邮件形式发送 当我为
  • 如何在 Python 中使用 HTTPPasswordMgrWithDefaultRealm()

    我需要编写一些使用 ftp 代理的 python ftp 代码 代理不需要身份验证 但我连接的 ftp 服务器需要身份验证 我有以下代码 但收到 I O 错误 ftp 错误 501 USER 格式 proxy user auth metho
  • 查找特定的正整数[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想找到整数n 以便当1 z 1 x 1 n时有1000种组合 这是我的代码 int counter 0 double n 1 while true for double i 1
  • 销售订单视图上的自定义选项卡

    如何在不修改核心代码的情况下向 Magento 中的销售订单视图添加新选项卡 我在网上看到了一些教程 但他们希望您在 app design adminhtml default default template 中添加 修改文件 这是核心目录
  • 在循环内如何将绘图存储在列表中?

    我正在循环内工作 我想将绘图保存在列表中 以便我可以将它们一起绘制在 pdf 中 问题在于列表未正确填充并使用上次运行的结果重新更新 所以 最终我得到的是一个包含五个完全相同的元素的列表 我知道这些循环可能看起来毫无用处 但我只是让它们创建
  • 有没有办法使用 Spotify API 暂停?

    我希望能够暂停当前曲目 但似乎找不到任何方法 文档在这里 http developer spotify com download spotify apps api reference 我正在使用以下内容来播放曲目 m player play
  • NSStream、UTF8String 和 NSString...混乱的转换

    我正在构建一个数据包 通过 NSStream 发送到服务器 我试图用 ascii 代码 167 分隔两条数据 这就是服务器的构建方式 所以我需要尝试保持在这些范围内 unichar asciiChar 167 yields self set
  • “{ }”的 Visual Studio Code 格式

    我在Ubuntu上 Visual Studio Code 中的 C 自动 lints 就像 if condition true DoStuff 相反 我想做 if condition true DoStuff 我怎么做 我已经安装了C C
  • 在启用 cookie 的网站上使用 urlretrieve 的多线程网络抓取工具

    我正在尝试编写我的第一个 Python 脚本 经过大量谷歌搜索 我认为我已经完成了 然而 我需要一些帮助才能冲过终点线 我需要编写一个脚本来登录启用 cookie 的站点 抓取一堆链接 然后生成一些进程来下载文件 我的程序以单线程运行 所以
  • 同一项目的单独丰富代码片段范围

    我正在为我的网上商店创建丰富的片段 我使用的项目类型之一是 组织 类型 问题是我已经在网上商店的页眉中指定了组织名称和图像 并在页脚中指定了地址 介于两者之间的是网上商店的其余部分 其中包含所有产品 评论等 当我测试我的丰富网页摘要时htt
  • .NET MethodInfo 缓存可以清除或禁用吗?

    Per MSDN 呼叫Type GetMethods 将反映的方法信息存储在MemberInfo缓存 因此不必再次执行昂贵的操作 我有一个扫描程序集 类型的应用程序 寻找与给定规范匹配的方法 问题在于 由于 NET 依赖于方法元数据 因此内
  • sql server 中的顺序分组依据

    对于该表 ID Status Value 1 1 4 2 1 7 3 1 9 4 2 1 5 2 7 6 1 8 7 1 9 8 2 1 9 0 4 10 0 3 11 0 8 12 1
  • 在 Hadoop 中链接多个 MapReduce 作业

    在许多应用 MapReduce 的现实生活中 最终的算法最终都是几个 MapReduce 步骤 即Map1 Reduce1 Map2 Reduce2等等 因此 您可以将最后一次归约的输出作为下一个映射的输入 一旦管道成功完成 您 通常 就不
  • Firebase Child 必须是非空字符串且不包含

    我正在使用 Firebase 在 Swift 中编写一个基本的消息应用程序 我已经完成了应用程序的大部分内容 但在 ChatViewController 中我收到此错误消息 Terminating app due to uncaught e
  • XSLT:删除多余的空白字符,保留节点

    所以我的问题是这样的 我有一个在很多地方使用的转换文档 并且通常处理许多小型格式转换 在一种特定情况下 我需要从结果中删除空格 输出看起来像这样 n 某事非常重要 带有上标注释1 n 我尝试过以下变体