2016-04-21 7 views
1

Некоторые из моих таблиц стилей немного большие, и некоторые их части повторяются. Я хотел бы использовать XInclude для них, что позволит мне отделить их от всей таблицы стилей. Я не могу использовать xsl:import или xsl:include, потому что мне нужно ввести их в определенное место для создания закладок и активных ссылок (для XSL-FO).XInclude в стилях XSLT (eXist-db)

Если я использую:

<xi:include href="/db/apps/tested-bunny/resources/xsl-fo/common/bookmark-tree.xml/> 

... файл .fo производства действительно включает в себя часть. Однако эта часть непереводится, что означает, что она есть как есть в источнике. Таким образом, процессор XSL-FO игнорирует его, а результат в формате pdf - без закладок.

Что касается отделенная части, я сохранил его как обычный файл XML с двумя пространствами имен, объявленных в корневом элементе:

<fo:bookmark-tree xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <xsl:if test="$head-level ge '1'"> 
    ... 

Если я пытаюсь включить один и тот же фрагмент кода в виде XSL таблицы стилей, это одно и то же: оно вводится правильно, но оно не добавляет его функциональности ко всей таблице стилей, оно все еще не переведено.

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

ответ

0

Для меня, рабочий раствор не XInclude но xsl:include и вызвать шаблон в нужное время:

... 
</fo:declarations> 
<!-- Bookmarks from the external stylesheet --> 
<xsl:call-template name="bookmark-tree"/> 
<fo:page-sequence master-reference="title-page"> 
... 

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

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0"> 
    <xsl:template name="bookmark-tree" match="."> 
     <fo:bookmark-tree> 
      ... 

И, конечно, это было необходимо включить таблицу стилей в той, где я называю шаблон:

<xsl:include href="common/bookmark-tree.xsl"/> 

Сейчас , Я рассматриваю этот вопрос как ответ.