Импорт XSL: как преодолеть различия в расположении файлов стиля (docbook или других)

#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 предназначены для решения этой проблемы (среди прочих).

Подробнее здесь.