Группы элементов

chameleon

Новичок
Группы элементов

Задачка:
примерный xml:
<?xml version="1.0"?>
PHP:
<root>
	<li>элемент1.1</li>
	<li>элемент1.2</li>
	<li>элемент1.3</li>
	<br/>
                <p>
	  <li>элемент2.1</li>
	  <li>элемент2.2</li>
	  <li>элемент2.3</li>
                </p>
	<br/>
	<li>элемент3.1</li>
	<br/>
	<li>элемент4.1</li>
	<li>элемент4.2</li>
</root>
сформировать 4 списка <ul> скажем и засунуть в каждый по группе элементов:
выход:
<?xml version="1.0"?>
PHP:
<ul>
<li>элемент1.1</li>
<li>элемент1.2</li>
<li>элемент1.3</li>
</ul>
<br/>
<p>
<ul>
<li>элемент2.1</li>
<li>элемент2.2</li>
<li>элемент2.3</li>
</ul>
</p>
<br/>
<ul>
<li>элемент3.1</li>
</ul>
<br/>
<ul>
<li>элемент4.1</li>
<li>элемент4.2</li>
</ul>
сразу оговорюсь, шаблоны я написал, но что-то они меня смущают (чем-то чувствую, что надо ключи использовать, а не могу :) , поэтому выкладывать пока не буду чтоб не сбивать полет мыслей остальных :).. хотелось бы увидеть кто-как видит решение.
 

Андрей М.

Guest
Вот такая вот у меня идея была:
PHP:
<?xml version="1.0"?>
<xsl:stylesheet 
	version="1.1"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
	<xsl:apply-templates />
</xsl:template>
<xsl:template match="li">
	<xsl:if test="name(preceding-sibling::*[1])!='li'">
		<xsl:text disable-output-escaping="yes">&lt;ul&gt;</xsl:text>
	</xsl:if>
	<li><xsl:value-of select="." /></li>
	<xsl:if test="name(following-sibling::*[1])!='li'">
		<xsl:text disable-output-escaping="yes">&lt;/ul&gt;</xsl:text>
	</xsl:if>
</xsl:template>
<xsl:template match="br"><br /></xsl:template>
<xsl:template match="p"><p><xsl:apply-templates /></p></xsl:template>
</xsl:stylesheet>
 
Сверху