0
我有一个使用XML + XSLT编码的网站,它为我提供了一个完整的HTML网站。现在,为了使网站更加美观,我想分割文档的一些部分:页眉,页脚和侧边栏。我在看谷歌,我发现这个解决方案:在XSLT中包含一个XML,然后应用一个foreach
<xsl:param name="doc" select="document('menu.xml')"/>
<xsl:template match="/">
<html><head></head><body><xsl:for-each
select="$doc"><xsl:apply-templates/></xsl:for-each></body></html>
</xsl:template>
我试图申请它,我可以得到它的工作。这是我使用的方式:
由于xsl位于文件夹内,因此我将路由更改为“../menu.xml”,这很有效。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="menu" select="document('../menu.xml')"/>
<xsl:template match="/">
更有效,工作代码,然后:
<ul class="menu_top">
<xsl:for-each select="$menu">
<li>
<a>
<xsl:attribute name="href">
#<xsl:value-of select="link" />
</xsl:attribute>
<xsl:value-of select="name"/>
</a>
</li>
</xsl:for-each>
</ul>
<xsl:for-each select="$menu">
<div class="submenu">
<xsl:attribute name="id">
<xsl:value-of select="link" />
</xsl:attribute>
<ul>
<xsl:for-each select="child">
<li>
<a>
<xsl:attribute name="href">
<xsl:value-of select="link" />
</xsl:attribute>
<xsl:value-of select="name"/>
</a>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:for-each>
最后我menu.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<menu>
<category>
<name>First</name>
<link>menu-1</link>
<child>
<name>Child 1</name>
<link>#</link>
</child>
<child>
<name>Child 2</name>
<link>#</link>
</child>
</category>
</menu>
我有多个类别条目,但我简化它。
提前致谢!
谢谢Welbog!这工作正常。我试图投票,但我没有足够的声誉!再次感谢! :) – ipalaus 2010-07-28 12:09:56
@Isern Palaus:另外,没有必要为所有'for-each'。它是完全有效的'apply-templates select =“$ doc”'。检查我的XML/XSLT客户端网站http://www.aranedabienesraices.com.ar – 2010-07-28 13:18:56
@Alejando我不知道如何使用正确的模板。 :( – ipalaus 2010-07-28 14:07:50