Невозможно удалить пространство имен из документа 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 не поддерживает это".
Смотрите также: