xml - XSLT 2.0 转换的文本输出中存在过多空格

标签 xml xslt

我正在测试项目所需的代码,但是输出中存在意外的空格,这可能会出现问题。 <xsl:text>的放置元素应该只会产生换行符,但我可能是错的。我最担心的是由于我缺乏经验,会产生额外的空白,因此我们将不胜感激。样式表:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

    <xsl:template match="files">
        <xsl:for-each-group select="file"  group-by="@project">
            <xsl:value-of select="current-grouping-key()"/>
            <xsl:text>
            </xsl:text>
        </xsl:for-each-group>
    </xsl:template>
</xsl:stylesheet>

测试来源:

<?xml version="1.0" encoding="utf-8"?>
<files>
  <file name="swablr.eps"     size="4313" project="mars"/>
  <file name="batboy.wks"     size="424"  project="neptune"/>
  <file name="potrzebie.dbf"  size="1102" project="jupiter"/>
  <file name="kwatz.xom"      size="43"   project="jupiter"/>
  <file name="paisley.doc"    size="988"  project="neptune"/>
  <file name="ummagumma.zip"  size="2441" project="mars"/>
  <file name="schtroumpf.txt" size="389"  project="mars"/>
  <file name="mondegreen.doc" size="1993" project="neptune"/>
  <file name="gadabout.pas"   size="685"  project="jupiter"/>
</files>

实际输出:

mars
                    neptune
                    jupiter

期望的结果:

mars
neptune
jupiter

我正在通过 node-java 使用 Saxon-HE s9api 转换源代码。到目前为止我已经尝试过 xsl:strip-space以及 normalize-space(current-grouping-key())两者都失败了。提前致谢。

J.

最佳答案

作为 DanielHaley 撰写的第二条评论的后续内容 (空白来自...):

需要一些 XSLT 和洞察力方面的经验才能发现 你的脚本出了什么问题,显然 DanielHaley 写道 他第一眼看到你的问题后就给出了正确的解决方案。

您可能习惯于嵌入式 XSLT 代码的逐步缩进, 例如在您的for-each-group内循环有 3 个同样缩进的 行:

  • xsl:value-of ,
  • xsl:text - 开始标签,
  • /xsl:text - 结束标签。

从某种程度上来说,这是件好事。看起来很整洁,但有时候也是需要的 弄清楚你用这样的代码实际上说了什么。

<xsl:text>之后你实际上有:

  • 换行符,
  • 多个空格(或制表符),
  • 最后</xsl:text> ,关闭要输出的文本。

因此,您想要输出的内容之间存在差异 以及您的(看起来整洁的)脚本实际输出的内容。 您只想输出换行符,而您的代码实际上 输出一些额外的空格,破坏结果。

现在,至少,您获得了一些如何编写 XSLT 代码的经验 以及如何避免此类错误。

关于xml - XSLT 2.0 转换的文本输出中存在过多空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528401/

相关文章:

android - EditText 高度-长度

javascript - XSTLProcessor 绕过 <tr> 和 <td> 标签

xml - JSON 和 XML 比较

xml - 从另一个节点的属性值中指定的路径检索 XML 节点

xml - 经过修改的 XSLT 副本

android - 如何在 xml 键盘 View 上创建自定义属性?

javascript - 使用 Worklight 和应用于 JSON 响应的 xsl 转换时出现奇怪的错误

java - 使用 XSLT 2 在线替换部分字符串

xml - 对属性(按值)使用一个模板,对(父)节点使用另一个模板

xslt - 识别 XSLT 中的 null 元素,即使在子元素中也没有值