Нужно сделать наследование xslt шаблонов аналогично Джанговскому.
Шаблон-подкласс расширяет базовый шаблон, заменяя пустой внутренний под-шаблон конкретным содержимым с собственной разметкой.
Требуется примерно следующее:
base.xsl
test.xsl
test.xml
Требуемый результат
Желательно реализовать строго через наследование, а не include.
Например, вывести сначала Before, затем content, затем after - это концептуально не то, что нужно.
Пробовал по документации, но ни одного даже неправильного вывода не получил. Только ошибки, типа здесь нельзя temlate, там нельзя import, тут нельзя что-то иное. В общем, ничего нельзя.
Шаблон-подкласс расширяет базовый шаблон, заменяя пустой внутренний под-шаблон конкретным содержимым с собственной разметкой.
Требуется примерно следующее:
base.xsl
Код:
<?xml version = "1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
BEFORE
<p>
<xsl:template match="content" ></xsl:template>
</p>
AFTER
</xsl:template>
</xsl:stylesheet>
Код:
<?xml version = "1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="base.xsl" />
<xsl:template match="content">
<xsl:for-each select="item">
<xsl:value-of select="@name" /><br />
</xsl:for-each>
<xsl:apply-imports />
</xsl:template>
</xsl:stylesheet>
Код:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<content>
<item name="Item1" />
<item name="Item2" />
<item name="Item3" />
</content>
Код:
BEFORE
<p>
Item1<br />
Item2<br />
Item3<br />
</p>
AFTER
Например, вывести сначала Before, затем content, затем after - это концептуально не то, что нужно.
Пробовал по документации, но ни одного даже неправильного вывода не получил. Только ошибки, типа здесь нельзя temlate, там нельзя import, тут нельзя что-то иное. В общем, ничего нельзя.