2017-02-18 5 views
0

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

Как это сделать?

+1

при импорте другого файла xslt, который будет автоматически применяться для вашего преобразования. – Rupesh

+1

Ваш вопрос непонятен. Когда вы используете 'xsl: import', ** all **, импортируются шаблоны импортированной таблицы стилей. Затем вы вызываете или применяете их, как если бы они были частью вашей таблицы стилей. Для получения дополнительной информации читайте: http://www.xml.com/pub/a/2000/11/01/xslt/ –

ответ

3

Использование <xsl:import> применения <xsl:call-template> довольно легко:

Пример XML с именем f.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <a>abc</a> 
    <b>cde</b> 
</root> 

Главная образец XSLT f.xslt:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:import href="f1.xslt"/> 

<xsl:template match="/root"> 
    A: <xsl:value-of select="a/text()" /> 
    <xsl:call-template name="secondTemplate" /> 
</xsl:template> 

</xsl:stylesheet> 

Включать образец XSLT f1.xslt:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template name="secondTemplate"> 
    B: <xsl:value-of select="b/text()" /> 
</xsl:template> 

</xsl:stylesheet> 

Выход:

<?xml version="1.0"?> 

    A: abc 
    B: cde 

Таким образом, первый XSLT (f.xslt) не называют второй XSLT (f1.xslt) - который импортируется с <xsl:import ...> - через именованный шаблон, который доступен с <xsl:call-template name="secondTemplate" /> линии.

0

Вы можете использовать <xsl:call-template> для вызова функции на традиционном языке программирования.

Вы можете определить функции в XSLT, как этот простой, который выводит строку.

<xsl:template name="dosomething"> 
    <xsl:text>A function that does something</xsl:text> 
</xsl:template> 

Эта функция может быть вызвана через <xsl:call-template name="dosomething">.

+0

Да, но у меня есть тонна шаблонов, уже сделанных в XSLT-файле, и я хочу импортировать их в другой файл XSLT, поэтому я могу их повторно использовать. Я не знаю, как это сделать ... Я знаю, что мне нужно использовать 'xsl: import', но не знаю, как вызвать шаблоны впоследствии. – Guilhermeffable

+0

вам не нужно импортировать все из них, достаточно импортировать файл вверх по потоку. –

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