Xalan-Java: установить путь поиска

Я написал таблицу стилей, которая загружает вторую таблицу стилей и переопределяет несколько вещей. Проблема в том, что для использования элемента xsl:import мне нужно знать абсолютный путь к таблице стилей, которую я пытаюсь импортировать. Как я могу обойти это?

В идеале я не хочу указывать абсолютный путь в таблице стилей. Я хочу передать его в командной строке. Таким образом, если базовая таблица стилей перемещается, мне не нужно редактировать все мои таблицы стилей.

Я использую инструмент командной строки Xalan-Java для применения XSLT. A просмотрел руководство, но, похоже, там нет какой-либо опции типа «посмотрите здесь для таблиц стилей».

Я также думал о передаче базового пути в качестве параметра XSL, но я не понимаю, как я могу засунуть это в атрибут href элемента xsl:import...

Любые подсказки? Конечно, я не могу быть первым, кто захочет это сделать...


В основном я пишу документы с помощью DocBook. Я скачал копию официальных таблиц стилей DocBook XSL (которые огромны и состоят из тысяч XSL-файлов). Для каждого документа, который я пишу, я хочу создать крошечный файл XSL, который импортирует официальный XSL DocBook, а затем настраивает несколько параметров (размер бумаги и т. д.).

Похоже, для этого мне придется жестко закодировать путь к официальному XSL-файлу DocBook в локальный XSL каждого документа. И это означает, что если я когда-нибудь обновлю официальные таблицы стилей до более новой версии, мне придется редактировать каждый пользовательский XSL, который я когда-либо писал [потому что номер версии таблицы стилей находится в пути] .

Что бы я хотел сделать, так это жестко закодировать этот путь в сценарии, запускающем Xalan. Так что, если таблицы стилей когда-нибудь переместятся, я могу просто отредактировать один скрипт, и все готово. Но я не могу понять, как это сделать. Я не вижу способа сообщить Ксалану, где искать импортированные таблицы стилей.

Даже если я использую относительные пути, в этих путях все равно жестко запрограммирован номер версии. И Windows не может делать символические ссылки, так что...


person MathematicalOrchid    schedule 20.02.2014    source источник


Ответы (2)


Атрибут href может быть относительным путем; пока известен базовый URI.

Если вы работаете из командной строки, то базовый URI «главной» таблицы стилей обычно известен, так что это не должно быть проблемой. Я думаю, вам нужно быть более конкретным в том, что вы делаете и как это терпит неудачу.

person Michael Kay    schedule 20.02.2014

Хорошо, я нашел решение:

Напишите один файл XSL с жестко запрограммированным в нем абсолютным путем к официальным таблицам стилей DocBook. Импортируйте все пользовательские таблицы стилей из этого. (Видимо, вы можете это сделать.)

Теперь, если официальные таблицы стилей когда-нибудь переместятся, мне нужно будет отредактировать только один файл.

(Это по-прежнему означает, что мне нужно иметь возможность найти волшебную таблицу стилей. Помещение ее в папку выше, где я храню все свои документы, делает эту простую операцию относительного пути.)

person MathematicalOrchid    schedule 20.02.2014