Такой вопрос. Есть мешанина данных типа:
<paragraph>
текст текст текст текст текст текст
</paragraph>
<paragraph>
текст текст текст<product>ABC</product> текст текст текст текст текст
текст <emphasis>Выделеный</emphasis> текст текст текст текст текст текст
<list>
<item>1</item>
<item>2</item>
<item>3</item>
</list>
текст текст текст текст текст текст
</paragraph>
Должно получиться типа такого:
текст текст текст текст текст текст
текст текст текст
ABC текст текст текст текст текст текст
Выделеный текст текст текст текст текст текст
текст текст текст текст текст текст
Те в теге paragraph может быть просто текст, который надо отображать, а могут быть ещё другие вложенные структуры, которые в свою очередь также могут иметь подструктуры. Например, элемент списка может представлять собой несколько paragraph-оф или содержать другие списки. И тд и тп
Я сделал такие шаблоны для одиночных элементов:
<xsl:template match="product" name="product_templ">
<h3>
<xsl:value-of select="."/>
</h3>
</xsl:template>
<xsl:template match="emphasis" name="emphasis_templ">
<b>
<xsl:value-of select="."/>
</b>
</xsl:template>
<xsl:template match="list">
<ul>
<xsl:for-each select="item">
<li>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template match="paragraph">
<p>
<xsl:value-of select="."/>
</p>
</xsl:template>
А как строить шаблоны для сложных (вложеных) структур? Описывать правила для сложных структур (например для текста со списком и тд до умопомрачения, на все случаи жизни) или же можно использовать автоматом готовые шаблоны внутри друхих шаблонов типа "apply select=нужный шаблон"?
Число примитивных структур конечно и изначально известно, но их сложность и глубина вложенности могут быть произвольными. К примеру, генератор генерит абзац, который содержит список и в этом списке попадается название продукта.