【发布时间】:2012-01-17 16:50:06
【问题描述】:
我的 Umbraco xslt 导航宏有点吃力。我已经完成了顶级工作,但现在意识到我需要第二级,并且每个顶级 LI 都有一个独特的类(以及适当的选定类)。谁能帮我吗?
这是我目前所拥有的:
<xsl:variable name="level" select="1"/>
<xsl:template match="/">
<ul id="section_navigation">
<xsl:for-each select="umbraco.library:GetXmlNodeById('1137')/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
<xsl:if test="count(./child::*[@isDoc and string(umbracoNaviHide) != '1']) > 0">
<div class="sub">
<ul>
<xsl:for-each select="./child::*[@isDoc and string(umbracoNaviHide) != '1']">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</xsl:template>
这是我正在寻找的结果:
<ul id="section_navigation">
<li class="pal"><a href="/Pal">Pal</a></li>
<li class="memo"><a href="/memo">Memo</a>
<div class="sub">
<ul>
<li><a href="/memo/latest">Latest</a></li>
<li><a href="/memo/history">History</a></li>>
</ul>
</div>
</li>
<li class="questions"><a href="/questions">Questions</a></li>
<li class="office"><a href="/office">Office</a></li>
<li class="mail"><a href="/mail">Mail</a>
<div class="sub">
<ul>
<li><a href="/mail/mailbox">MailBox</a></li><li><a href="/mail/new-message">New Message</a></li>
</ul>
</div>
</li>
<li class="jobs"><a href="/jobs">jobs</a>
<div class="sub">
<ul>
<li><a href="/jobs/all">All</a></li>
<li><a href="/jobs/magazine">Magazine</a></li>
</ul>
</div>
</li>
</ul>
不确定 div class="sub" 中的子部分是否正确。也许如果我将选定的类添加到父 LI 虽然它可能会起作用。
我认为对于 LI 类,我可以使用页面名称并尝试类似 <li class="{@Name}"> 的内容,但没有成功。那里的任何想法也将不胜感激。
如果有更多有用的信息,请告诉我。
非常感谢
【问题讨论】:
-
这不是一个合适的问题: 1. 实际问的是什么? 2. 未提供源 XML 文档。 3. 没有提供想要的转换结果。 4. 没有规定转换应该实现的要求。
-
1.当前状态下的代码无法显示 2 级菜单。我的问题是有人可以帮助我使它工作。它适用于单个菜单。 2.什么来源的XML? 3. 好点 - 现在添加到主要问题。 4. 我不知道你在这里找什么。谢谢
-
e-on:这些是每个试图理解您的帖子的人都会问的问题。首先,人们需要有 XML 文档、XSLT 代码,并且能够执行转换并重现报告的结果。截至目前,这个问题处于未定义状态。
-
在哪里可以找到 XML 文档?这是我第一次使用 xslt,如果我知道这一切,我深表歉意
-
e-on:对 XML 文档应用转换。如果您不知道在哪个 XML 文档上应用了您的转换,那么您根本不知道自己在做什么,甚至不知道自己必须做什么。跨度>