Нужна помощь в понимании оператора импорта xsl из DITA-OT xsl

Заявление выглядит следующим образом:

<xsl:import href="plugin:org.dita.xhtml:xsl/dita2html-base.xsl"/>

Я новичок в XSL. Я знаю, что для атрибута href требуется URI, но как значение href разрешается в URI в приведенном выше выражении. Этот код является частью xsl плагина xhtml в DITA-OT. Таких заявлений несколько. Это относительные пути из корневого каталога? Как код DITA-OT разрешает эти пути?


person Ritesh Srivastava    schedule 21.07.2015    source источник
comment
Я предполагаю, что plugin: — это настраиваемая схема URI, известная и поддерживаемая используемым вами программным обеспечением, она будет иметь некоторую реализацию преобразователя URI, который знает, как обрабатывать эти URI со схемой plugin:.   -  person Martin Honnen    schedule 21.07.2015
comment
@MartinHonnen Вы имеете в виду что-то вроде этой ссылки ?   -  person Ritesh Srivastava    schedule 22.07.2015
comment
Эта ссылка посвящена .NET, хотя я понимаю, что набор инструментов Dita основан на Java. Я не знаком с деталями инструментария, может кто-то еще расскажет подробнее.   -  person Martin Honnen    schedule 22.07.2015


Ответы (1)


Если вы заглянете в корневую папку установки DITA-OT, вы найдете файл с именем catalog-dita.xml. Это XML-каталог, предназначенный для предоставления схем разрешения для XML-сущностей. Выдержка из реферата спецификации каталогов XML:

этот стандарт OASIS определяет каталог сущностей, который отображает как внешние идентификаторы, так и произвольные ссылки URI на ссылки URI.

Откройте файл catalog-dita.xml и выполните поиск plugin:org.dita.xhtml. Вы найдете эту запись:

<rewriteURI uriStartString='plugin:org.dita.xhtml:' rewritePrefix='plugins/org.dita.xhtml/'/>

Таким образом, любые <xsl:import href="..."> (а также функции <xsl:include href="..."> и document()) со ссылочным uri, начинающимся с plugin:org.dita.xhtml:, будут "перенаправлены" в папку plugins/org.dita.xhtml/, так что в вашем случае будет выполняться поиск файла plugins/org.dita.xhtml/xsl/dita2html-base.xsl относительно папки установки DITA-OT. .

Но как используется этот каталог?

Например, в $DITAOT_DIR$\plugins\org.dita.xhtml\build_general.xml (он широко используется в DITA-OT, поэтому можно найти эти инструкции почти во всех файлах build_xxx.xml) вы найдете что-то вроде:

<xslt basedir="${dita.temp.dir}" destdir="${output.dir}" includesfile="${dita.temp.dir}${file.separator}${fullditatopicfile}" reloadstylesheet="${dita.xhtml.reloadstylesheet}" classpathref="dost.class.path" extension="${out.ext}" style="${args.xsl}" filenameparameter="FILENAME" filedirparameter="FILEDIR">

  <!-- A huge bunch of parameters comes here ... -->
  <param name="[...]" expression="[...]"></param>

  <xmlcatalog refid="dita.catalog"></xmlcatalog>
</xslt>

Это предназначено для вызова преобразования XSL-T (<xslt> вот ant) с каталогом, который предоставит соответствующие сопоставления URI для всех ресурсов, необходимых во время преобразования. Очевидно, что dita.catalog является ссылкой на каталог, объявленный в другом месте.

Откройте $DITAOT_DIR$\plugins\org.dita.basebuild_init.xml, вы найдете это:

<xmlcatalog id="dita.catalog">
  <catalogpath path="${dita.plugin.org.dita.base.dir}/catalog-dita.xml"/>
</xmlcatalog>

Что указывает на каталог XML, который был открыт в начале.

person potame    schedule 22.10.2015