【问题标题】:Avoiding line breaks with Saxon XSLT processor使用 Saxon XSLT 处理器避免换行
【发布时间】:2017-04-10 00:01:35
【问题描述】:

正在测试当前 saxon9he.jar 中的 xsl:output 并尝试使用以下调用:

    <xsl:output encoding="UTF-8" media-type="text/plain"
        indent="yes" method="text" saxon:line-length="1000"/>

导致 “线程“主”net.sf.saxon.trans.LicenseException 中的异常: 请求的功能(自定义序列化 {http://saxon.sf.net/}line-length)需要 Saxon-PE"

同时在另一个样式表中,以下似乎有效:

    <xsl:result-document href="{$sourceFilePath}" method="html" omit-xml-declaration="yes"
         encoding="UTF-8" indent="yes" saxon:line-length="120">

升级到付费 PE 版本不是一种选择,因为这项工作是必须可重复的开源标准开发项目的一部分。也不想将样式表(和调用)从 xsl:output 重构为 xsl:result-document。

我希望两个 xsl 元素都可以提供一致的实现支持。

对 saxon:line-length 的参考是 http://www.saxonica.com/documentation9.5/extensions/output-extras/line-length.htmlhttp://www.saxonica.com/documentation/index.html#!changes/serialization/9.2-9.3

【问题讨论】:

    标签: saxon


    【解决方案1】:

    一般规则是所有 Saxon 扩展都需要 Saxon-PE。我认为 Saxon-HE 对这两种情况的正确操作应该是输出警告并忽略请求:我会检查是否发生了这种情况。

    我们很高兴为开源社区提供高度符合性的 XSLT 处理器;我们能够做到这一点要感谢那些为商业版本付费的人。如果这有时意味着开源用户无法始终拥有他们想要的所有功能,我很抱歉,但如果没有这种商业模式,开源用户将一无所有。

    【讨论】:

    • 感谢您的回复。如果这些工具确实没有做任何强制使用扩展的特殊操作,那就太好了。首先造成困难的原因是 saxon9he.jar(似乎过于热心)在第 80 列周围插入了一个换行符,从字面上打破了源代码输出的长行。让样式表本身控制所有文本(包括换行符)似乎是一个不错的默认设置。
    • 该规范对method=html, indent=yes 说,处理器应该尝试以一种在不改变浏览器呈现方式的情况下最大限度地提高原始 HTML 可读性的方式插入空格,而 Saxon 正在积极尝试实现这一目标。
    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多