fo: объект указан, но не объявлен

xml entity doctype xsl-fo apache-fop

3246 просмотра

1 ответ

Я получаю сообщение об ошибке «на сущность 0slash ссылаются, но не объявляют» всякий раз, когда я пытаюсь преобразовать файл .fo в .pdf с помощью apache fop 1.0

Я обнаружил, что вы можете объявлять сущности в DTD, однако мой файл .fo не имеет DTD. Должен ли он иметь? Если нет, как я могу решить эту проблему? Желательно без использования дополнительных .xsl или каких-либо других файлов?

Автор: Sejanus Источник Размещён: 22.10.2019 02:40

Ответы (1)


4 плюса

Решение

(ПРИМЕЧАНИЕ. В своем ответе я использую «Oslash» (о, косая черта) вместо «0slash» (нулевая косая черта), который у вас есть в вашем вопросе. Поскольку вы не можете начать имя сущности с цифры, я при условии, что ноль является опечаткой.)

У вас есть несколько вариантов:

  1. Вы можете изменить все, что создает ваш XSL-FO, для вывода шестнадцатеричных ссылок вместо ссылок на сущности ISO. В этом случае Øбудет Ø.

  2. Вы можете объявить сущность во внутреннем подмножестве объявления DOCTYPE.

Вот пример XSL-FO с добавленным DOCTYPE:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fo:root [
<!ENTITY Oslash "&#xD8;">
]>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="page">
            <fo:region-body region-name="body"></fo:region-body>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="page">
        <fo:flow flow-name="body">
          <fo:block>Hello World! &Oslash;</fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

Если вы обработаете это с помощью FOP, вы получите: Hello World! Ø

Автор: Daniel Haley Размещён: 18.05.2011 05:06
Вопросы из категории :
32x32