XSL: FO текущие встроенные цитаты - PullRequest
0 голосов
/ 31 мая 2018

Я вывожу XML-документ в PDF, используя XSL: FO (XEP). Все работает очень хорошо, за исключением случаев, когда я вводю кавычки.По какой-то причине фразы с кавычками не «текут».Это лучше всего видно на картинке:

problem with text flow

Исходный XML выглядит так:

<seg>Item. Dixit quod P[etrus] Gauta loqutus est 
  publice Bernardo, domino del Mas, contra 
  ipsum testis in hunc modum <quote>Bernarde del Mas, 
  est ne bonum quod aliquis qui detexerit nos eat vivus 
  super terram?</quote> Et propter illa verba, ipse testis cum 
  familia sua exivit de Manso.</seg>

<seg>Item. Dixit quod Iordanus de Quiders 
  dixit <quote>Nuper ipsi testis modo apparebit quis 
  expeditus erit citius vos qui provenistis alios in 
  confessione</quote>. Et abiuravit heresim et 
  iuravit et cetera. Testes: Arnaldus, prior Sancti 
  Saturnini; et magister P[etrus] de Caramag; 
  et frater B[ernardus], inquisitor.</seg>

XSL: FOдостаточно просто.Элемент <quote> заменяется на "

<xsl:template match="quote">
    <fo:inline><xsl:text>"</xsl:text><xsl:apply-templates/><xsl:text>"</xsl:text></fo:inline>
</xsl:template>  

Он активируется простым fo:flow (а остальная часть текста передается с проблемами с нулевым потоком):

<!-- content flow -->
<fo:flow flow-name="xsl-region-body" font-family="Times" font-weight="normal" font-size="10pt">
     <xsl:apply-templates/>
</fo:flow>

Есть ли специальный способ обработки кавычек в строке?

---- ДОБАВЛЕНО ----

Это шаблон, который обрабатывает элемент <seg>, превращая каждый вновый абзац.

<xsl:template match="seg">
    <xsl:for-each select=".">
        <fo:block
            font-family="Times" font-weight="normal" line-height="12pt" line-stacking-strategy="font-height" keep-together="always" 
            font-size="10pt" space-before="10pt" space-after="10pt" text-align="justify" end-indent="120pt">
            <xsl:apply-templates/>
        </fo:block>
    </xsl:for-each>
</xsl:template>

Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

Измените keep-together на keep-together.within-page.В настоящее время вы заставляете fo:inline держаться вместе в одной строке.См. https://www.w3.org/TR/xsl11/#keep-together.

Строго говоря, вам даже не нужен fo:inline, поскольку вы не добавляете и не изменяете какие-либо свойства с помощью fo:inline.Вы также можете использовать «фигурные кавычки» ( и ) для улучшения внешнего вида вашего текста.

...