#xslt #import #coding-style #location #docbook
#xslt #импорт #стиль кодирования #Расположение #docbook
Вопрос:
Исходя из дистрибутива Linux и скопировав / вставив несколько примеров по сети, я делаю следующее, чтобы включить стиль DocBook в мои файлы XSL (обработанные с помощью xsltproc):
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl"/>
...
Это отлично работает, пока «docbook.xsl» находится в указанном месте. Конечно, это не всегда. Например, в Mac OSX с MacPorts это должно быть:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="/opt/local/share/xsl/docbook-xsl/html/docbook.xsl"/>
...
Совершенно другой путь. Я просмотрел сеть, чтобы узнать, существует ли функция «файл существует» для XSL (по-видимому, пока нет) или возможно ли условное включение (по-видимому, нет).
Итак, если не считать необходимости динамического создания XSL в зависимости от того, где на самом деле находится «docbook.xsl» (я бы, вероятно, сделал это через Makefile), есть ли какие-либо другие возможности импортировать файл из правильного местоположения без особых хлопот?
Редактировать / Ответ: Дмитрий указал правильный путь, и после небольшого чтения там и в файлах общего каталога в моих системах, короткий ответ на конкретную проблему заключается в использовании:
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
Обращение закрыто, проблема решена. И написание собственных каталогов откладывается на другое время 🙂
Комментарии:
1. Хороший вопрос, 1. Смотрите мой ответ для общего и стандартного решения.
2. Вы написали: «Я просмотрел сеть, чтобы узнать, существует ли функциональность «file exists» для XSL (по-видимому, пока нет) или возможны ли условные включения (по-видимому, нет)». Это не совсем так. Найдите эти проблемы здесь, в SO.
Ответ №1:
Итак, если не считать необходимости динамического создания XSL в зависимости от того, где на самом деле находится «docbook.xsl» (я бы, вероятно, сделал это через Makefile), есть ли какие-либо другие возможности импортировать файл из правильного местоположения без особых хлопот?
Каталоги XML предназначены для решения этой проблемы (среди прочих).
Подробнее здесь.