Здравствуйте Ed Sin, Вы писали:
ES>Можно ли как-то с помощью xsl выводить дерево, записанное в xml, которое может быть сколь угодно большим. Как организовать обход xml файла? И как тогда именовать xml теги?
XML:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="t.xsl"?>
<root>
<group id="0">
<group id="1">
<group id="1.1">
<user id="i1.1-1">i1.1-1</user>
</group>
<group id="1.2"></group>
<group id="1.3">
<user id="i1.3-1">i1.3-1</user>
<user id="i1.3-2">i1.3-2</user>
<group id="1.3.1">
<user id="i1.3.1-1">i1.3.1-1</user>
</group>
</group>
<user id="i1-1">i1-1</user>
</group>
<group id="2"></group>
<group id="3">
<group id="3.1">
<user id="i3.1-1">i3.1-1</user>
</group>
</group>
</group>
</root>
XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
List of groups:
<xsl:apply-templates select="/root/group"/>
List of items:
<ul>
<xsl:for-each select="//*/user">
<xsl:sort data-type="text"/>
<xsl:call-template name="list"/>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="group">
<ul>
<li>
<xsl:value-of select="name()"/>-<xsl:value-of select="@id"/>
<xsl:for-each select="./group">
<xsl:apply-templates select="."/>
<xsl:for-each select="./user">
<ul>
<xsl:apply-templates select="."/></ul>
</xsl:for-each>
</xsl:for-each>
</li>
</ul>
</xsl:template>
<xsl:template match="user">
<li><b>(
<xsl:value-of select="name()"/>-<xsl:value-of select="@id"/>
)</b></li>
</xsl:template>
<xsl:template name="list">
<li><xsl:value-of select="@id"/></li>
</xsl:template>
</xsl:stylesheet>
Про это спрашивал? Если нет, то уточни вопрос.