Невозможно удалить пространство имен из документа DB5, невозможно продолжить Ошибка при сообщении xsl: в строке 162 файла docbook.xsl:

Я пытаюсь использовать xsltproc для Windows и XI: включить в мой документ Docbook 5, а не сущностей.

К сожалению, версия для Windows не поддерживает это.

Saxon 9.6 и msxsl оба сообщают об ошибке:

Unable to strip the namespace from DB5 document, cannot proceed Error at xsl:message on line 162 of docbook.xsl:

Я включил

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook" 
exclude-result-prefixes="d">

в моей настройке xsl.

Есть ли что-то еще, что я должен делать?

Я отредактировал свою таблицу стилей настройки на

<?xml version='1.0'?>

<xsl:import href="file:///C:/docbook/docbook-xsl-ns-1.78.1/fo/docbook.xsl"/>

и используйте команду

>C:\docbook\Saxonica\SaxonHE9.5N\bin\transform  -xi -xsl:my_fo.xsl  -s:my_db.xml

теперь это должно работать?

1 ответ

Решение

Ни HE версия Saxon 9.5 (пока нет 9.6), ни msxsl не поддерживают exsl:node-set() расширение (которое требуется при удалении пространства имен). Saxon 9 - это процессор XSLT 2.0, который в основном означает, что эта функция расширения не нужна (см. Также http://www.saxonica.com/documentation/html/extensions/functions/exslt.html). Для msxsl вам потребуется дополнительная загрузка (см. http://www.xml.com/pub/a/2003/08/06/exslt.html).

Он должен работать с Saxon 6.5.5 или xsltproc (процессоры XSLT 1.0).

Из сообщения об ошибке я вижу, что вы используете таблицы стилей, не поддерживающие пространство имен. Поскольку речь идет об обработке DocBook 5, я советую вам переключиться на таблицы стилей с поддержкой пространства имен (docbook-xsl-ns, доступные по адресу http://sourceforge.net/projects/docbook/files/docbook-xsl-ns/). Тогда не будет необходимости в зачистке пространства имен.

Вы также упоминаете использование xi:include, Любые проблемы с XInclude, вероятно, не связаны с проблемой удаления пространства имен. Я не уверен, что вы подразумеваете под "этим", когда говорите "версия для Windows не поддерживает это".

Смотрите также:

Другие вопросы по тегам