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

Исходя из дистрибутива 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 Ответ

2 голосов
/ 23 апреля 2011

Итак, если не считать динамического создать XSL в зависимости от того, где "docbook.xsl" действительно есть (я бы видимо к тому через Makefile), есть Есть ли другие возможности файл импортирован из правильного место без особых хлопот?

Каталоги XML предназначены для решения этой проблемы (среди прочих).

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

...