用 XSLT 转换 SQL 记录, 生成无限级树 |
上一篇:我的天老爷呀,怎么说冷就冷啊。 下一篇:[心缘地方]同学录--增加管理功能:修改成员密码 |
添加日期:2005/4/7 23:27:11 |
快速返回 返回列表 |
阅读8331次 |
From:http://w3.org.cn/lex/?q=node/10 Author:lexrus
我先从数据库里描述树枝关系的表中取出所有记录, 并生成 sqloutput.xml 如下: <?xml version="1.0" encoding="utf-8"?> <table> <record id="1" name="Linux"/> <record id="2" name="BSDs"/> <record id="3" name="Gentoo" parent="1"/> <record id="4" name="Slackware" parent="1"/> <record id="5" name="Slax" parent="4"/> <record id="6" name="Slackintoch" parent="4"/> <record id="7" name="FreeBSD" parent="2"/> <record id="8" name="OpenBSD" parent="2"/> <record id="9" name="Slax 5.0" parent="5"/> <record id="10" name="Slax Kill Bill" parent="5"/> </table>
然后又写了 sqlml2xhtml.xslt 如下, 跟据 parentId 和 id 属性进行模板匹配: <?xml version="1.0" encoding="utf-8"?> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:apply-templates select="//record[not(@parent)]"/> </xsl:template> <xsl:template match="//record"> <xsl:param name="id" select="@id"/> <ul> <li><xsl:value-of select="@name"/></li> <xsl:apply-templates select="//record[@parent=$id]"/> </ul> </xsl:template> </xsl:transform>
最后编写转换程序 transform.php 如下: <?php $xh=xslt_create(); echo xslt_process($xh, 'sqloutput.xml', 'sqlml2xhtml.xslt'); ?>
最后看到的结果是这样的:
<ul> <li>Linux</li> <ul> <li>Gentoo</li> </ul> <ul> <li>Slackware</li> <ul> <li>Slax</li> <ul> <li>Slax 5.0</li> </ul> <ul> <li>Slax Kill Bill</li> </ul> </ul> <ul> <li>Slackintoch</li> </ul> </ul> </ul> <ul> <li>BSDs</li> <ul> <li>FreeBSD</li> </ul> <ul> <li>OpenBSD</li> </ul> </ul>
|
|
评论 COMMENTS |
没有评论 No Comments. |
|