У меня есть сайт с кодом XML + XSLT, который выводит меня на полноценный HTML-сайт. Теперь, чтобы сделать сайт более динамичным, я хочу разделить некоторые части документа: верхний и нижний колонтитулы и боковую панель. Я искал в Google, и я нашел это решение:
<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>
Я пытался применить это, и я могу заставить его работать. Вот способ, которым я пользуюсь:
Я изменил маршрут на "../menu.xml", потому что xsl находится внутри папки, это хорошо работает.
<?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>
У меня есть больше категорий, но я упростила это.
Заранее спасибо!