cryo
Guest
Чайниковский вопрос XSLT
Подскажите пожалуйста как мне сделать что-то типа:
Хочу чтобы на выходе получилось
Судя по спецификации XSLT на w3c.org, при сработке темплейта по матч на определенный узел в исходном XML-дереве, этот узел заменяется на содержимое темплейта. Затем "подставленные" из темплэйта узлы подвергаются обработке <xsl:template match> и.т.д. рекурсивно. У меня же что-то ничего не получается.
Суть того что я хочу сделать. Страница у меня генерится на php в виде xml документа вообще без какого-либо оформления - голые структурированные данные. Затем применяется xslt. Хочется, чтобы не засорять <xsl:template match="/> в нем сохранить только лишь блочную разметку, внешний вид блоков же вынести в отдельные темплейты. Что-то типа
Подскажите пожалуйста как мне сделать что-то типа:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<element />
<document>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<new_element />
<xsl:apply-templates />
</xsl:template>
<xsl:template match="new_element">
<substitution_of_new_element />
</xsl:template>
</xsl:stylesheet>
PHP:
<?xml version="1.0" encoding="utf-8"?>
<substitution_of_new_element />
Суть того что я хочу сделать. Страница у меня генерится на php в виде xml документа вообще без какого-либо оформления - голые структурированные данные. Затем применяется xslt. Хочется, чтобы не засорять <xsl:template match="/> в нем сохранить только лишь блочную разметку, внешний вид блоков же вынести в отдельные темплейты. Что-то типа
PHP:
<xsl:stylesheet ... >
<xsl:template match="/">
<html>
<body>
<table><tr>
<td><left_column /></td>
<td><center_column /></td>
</tr></table>
</body>
</html>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="left_column">
новости, статьи, навигация и.т.п. - вызываем соответствующие шаблоны, отвечающие за блоки
</xsl:template>
<xsl:template match="center_column">
тут прорисовываем вторую колонку.
</xsl:template>
</xsl:stylesheet>