如何在eXist-db中生成XSL-FO时保留处理指令?

时间:2017-12-04 12:27:38

标签: xslt exist-db processing-instruction

有没有办法让eXist按原样返回处理指令?它似乎在输出中忽略了它。

如果我使用XEP作为我的渲染引擎,处理指令非常有用,因此能够在XSL-FO文档的根目录之前或在其启动之后立即保留它们会很棒。

如果我在模板中:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:tei="http://www.tei-c.org/ns/1.0" version="2.0">
    <xsl:template match="/">
        <fo:root>
        <?xep-pdf-page-layout two-columns-right?>

它只是返回:

<fo:root xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>

我试图通过以下方式触摸保存处理说明: declare option exist:serialize "method=xhtml media-type=text/xml process-xsl-pi=yes";在我的查询的序言中,但无济于事。

更新我

我的方案的步骤是:

  1. 从DB
  2. 加载文档
  3. 将其传递给transform:transform()函数
  4. 在调用transform:transform()函数时,我将一个基本样式表传递给它,其中包含其他样式表
  5. 我需要将处理指令添加到pages-masters的样式表中,该样式表涵盖了渲染引擎稍后使用的FO文档的根。包含此样式表(<xsl:include/>)到基本样式表(收集所有样式表)并传递给函数。

1 个答案:

答案 0 :(得分:4)

使用XSLT,要输出处理指令,请使用<xsl:processing-instruction name="xep-pdf-page-layout">two-columns-right</xsl:processing-instruction> <?xep-pdf-page-layout two-columns-right?>在转换结果中使用pi class Good(object): a = 1 def works(thing: Good): print(thing.a) o = Good() works(o) Bad = type('Bad', (object, ), dict(a=1)) def fails_mypy(thing: Bad): print(thing.a) s = Bad() fails_mypy(s)