【问题标题】:Saxon: Transformation of XML撒克逊人:XML 的转换
【发布时间】:2019-03-11 18:05:42
【问题描述】:

我正在使用 Saxon9he.jar 转换一个 XML 文件。 我的原始文件有几个属性,例如:

<div>
  <s id="1-1" lang="en">
    <w deprel="hi" head="1-1-2" id="1-1-1" lemma="Hi" pos="NN">Hi</w>
    <w deprel="ATTR" head="1-1-2" id="1-1-2" lemma="everyone" pos="NN">everyone</w>
  </s>
</div>

转换后,Saxon 将每个属性写在一行上。但我想把它们放在一条线上,就像原来的一样。 我怎样才能做到这一点?我必须在 jar 文件中更改什么?

感谢您的帮助!

【问题讨论】:

    标签: python saxon saxon-js


    【解决方案1】:

    大概你请求了indent="yes",无论是明确的还是隐含的。这是对 XSLT 处理器的请求,要求其尽其所能使输出尽可能可读,但要受到某些约束。 Saxon 尝试使输出可读的一种方法是避免输出中的行过长,因为水平滚动通常被认为不利于可用性。

    如果您迁移到 Saxon PE,那么您可以通过设置最大行长(使用 xsl:output/@saxon:line-length)对此进行一些控制。使用 Saxon HE,您只需要忍受 Saxon 为您提供的格式,除非您想编写 Java 代码来自定义序列化行为(如果您准备深入研究,这并不难)。

    当然,无论我们做什么,有些人会喜欢它,而另一些人会讨厌它。

    【讨论】:

    • 感谢您的回答!嗯,我正在使用 Saxon HE,所以我应该编写 Java 代码。但老实说,我不知道这些关于行长的信息存储在哪里。你能帮帮我吗?
    • 编写覆盖newXMLIndenter() 或newHTMLIndenter() 的SerializerFactory 的子类以创建覆盖getLineLength() 的标准XMLIndenter 或HTMLIndenter 的子类。使用Configuration.setSerializerFactory()注册您的SerializerFactory。
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2019-05-29
    相关资源
    最近更新 更多