2017-02-01 49 views
1

Я работаю над (моим первым) проектом DITA с использованием Oxygen и вызывая FOP для создания PDF-вывода. Попытка выяснить, что происходит по всей цепочке: цепочка: document -> element -> class -> class в определении .xsl -> атрибутов в attr.xslЧто означает «<xsl: call-template name =» commonattributes «/>» означает и как оно используется?

У меня все в порядке со всеми за исключением определения шаблона класса, которое, как представляется, всегда связано с линией: <xsl:call-template name="commonattributes"/>

Где хранится этот шаблон и как он настроен?

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

+1

Выражение вызывает шаблон с именем commonattributes – Madeyedexter

+1

«* Где этот шаблон хранится ... *» Он хранится либо в той же таблицы стилей, которая называет его или в другой таблице стилей, что ваша таблица стилей включает в себя или импорт. - «* ... и как он настроен?» «Мы этого не видим, поэтому мы не можем сказать. –

+0

Спасибо! Из этого я наконец выяснил, что искать. Шалость удалась. –

ответ

0

шаблоны XSLT могут быть сопоставлены с входным документом при записи с @match или называется процедурно, когда он написан с атрибутом @name.

Вы столкнулись с процедурным вызовом шаблона с именем commonattributes, который будет определен непосредственно в вашем XSLT-файле или косвенно через xsl:include или xsl:import.

Не видя определение commonattributes можно легко догадаться, что его цель состоит в том, чтобы закрепить определение общего набора атрибутов в одном месте, так что они будут управляться централизованно и прикладываются через xsl:call-template на несколько элементов, генерируемых вашей XSLT. Это общий шаблон в XSLT.

1

Предполагаете, вы используете DITA Open Toolkit (OT). В версии 2.2.4 OT это именованный шаблон находится в следующем файле:

DITA-OT/плагины/org.dita.pdf2/XSL/FO/commons.xsl

Этого шаблон применяется другими шаблонами для некоторые общие атрибуты, такие как @id. Я сомневаюсь, что вам нужно будет «настроить» его, и у него нет никаких параметров. Вот оно:

<!-- Process common attributes --> 
<xsl:template name="commonattributes"> 
    <xsl:apply-templates select="@id"/> 
    <xsl:apply-templates select="*[contains(@class,' ditaot-d/ditaval-startprop ')] | 
           *[contains(@class,' ditaot-d/ditaval-endprop ')]" mode="flag-attributes"/> 
</xsl:template> 

 Смежные вопросы

  • Нет связанных вопросов^_^