【发布时间】:2011-08-11 02:15:18
【问题描述】:
我有一个关于 XSL 转换 (XSLT-1) 的问题。几天以来我一直在尝试它,但我没有让它工作。
我想用 XML 和 XSLT-1 构建一个标准的网站树形导航。它应该只显示当前项目路径上的项目。如果当前项有子项,则应打开下一个节点。
我的 XML 源是这样的:
<cat>
<item id="0" name="1">
<item id="1" name="1.1"></item>
<item id="2" name="1.2"></item>
<item id="3" name="1.3"></item>
<item id="4" name="1.4">
<item id="5" name="1.4.1">
<item id="6" name="1.4.1.1"></item>
<item id="7" name="1.4.1.2"></item>
<item id="8" name="1.4.1.3"></item>
</item>
<item id="9" name="1.4.2"></item>
<item id="10" name="1.4.3"></item>
</item>
<item id="11" name="1.5"></item>
<item id="12" name="1.6"></item>
</item>
<item id="13" name="2">
<item id="14" name="2.1"></item>
<item id="15" name="2.2"></item>
</item>
<item id="16" name="3"></item>
</cat>
现在我想调用一个通过 URL 发送的带有 $pageid=7 的页面,它应该显示如下输出:
<ul>
<li>1
<ul>
<li>1.1</li>
<li>1.2</li>
<li>1.3</li>
<li>1.4
<ul>
<li>1.4.1
<ul>
<li>1.4.1.1</li>
<li class="activeitem">1.4.1.2</li>
<li>1.4.1.3</li>
</ul>
</li>
<li>1.4.2</li>
<li>1.4.3</li>
</ul>
</li>
<li>1.5</li>
<li>1.6</li>
</ul>
</li>
<li>2</li>
<li>3</li>
</ul>
如果我调用一个通过 URL 发送的带有 $pageid=4 的页面,它应该显示如下输出:
<ul>
<li>1
<ul>
<li>1.1</li>
<li>1.2</li>
<li>1.3</li>
<li class="activeitem">1.4
<ul>
<li>1.4.1</li>
<li>1.4.2</li>
<li>1.4.3</li>
</ul>
</li>
<li>1.5</li>
<li>1.6</li>
</ul>
</li>
<li>2</li>
<li>3</li>
</ul>
希望我的例子能被所有人理解。
我已经有了一个站点地图和一个面包屑导航,但这个似乎非常棘手和经验丰富。
我尝试修改 Tree navigation with XML and XSLT 中的示例 - 但效果不佳。它只显示项目的路径,而不显示其余部分。
有 XSLT-1 方面经验的人可以帮我解决吗?
或者也许有人已经有一个可行的解决方案可以在这里发布?
这将是非常友好的。谢谢大家的关注。
【问题讨论】:
标签: xml xslt xhtml tree navigation