【问题标题】:Freemarker XPath expression to find a node with a child idFreemarker XPath 表达式以查找具有子 id 的节点
【发布时间】:2015-03-17 05:36:04
【问题描述】:

我正在使用 Freemarker XML 处理来构建菜单。我想查找当前元素或其任何子元素是否具有与 activeNode 匹配的 id。

但是我在为 XPath 制定 Freemarker 语法时遇到了很多麻烦。这似乎匹配所有带有子链接的节点(注意item 是对客户节点的节点引用)

<#assign aNode="search-customers" />
<#assign xpath>link["@id=${aNode}"]</#assign>

<#if item[xpath][0]?has_content>
    <#assign cssClass> class="active"</#assign>
</#if>  

这是我要匹配的 xml 的相关部分。例如,search-customers 节点应突出显示 customers 节点。

<menu>
    <top title="title.home" url="/admin" icon="fa fa-home" />
    <top title="title.customers" id="customers" url="javascript:;" icon="fa fa-group">
        <link title="title.search.customers" id="search-customers" url="/admin/customers"></link>
        <link title="title.register.customer" id="register-customer" url="/admin/customers/new"></link>
        <link title="title.contact.us" id="contact-us" url="/admin/contactus"></link>
        <link title="title.subscribers" id="subscribers" url="/admin/subscribers"></link>
    </top>

理想情况下,它也会匹配当前节点 id - 因此如果子节点 id 或当前节点 id 匹配 activeNode,则 css 应该是活动的。

任何人都可以帮助使用 Freemarker 语法吗?

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    没关系,我最终想通了,我认为是文档中的一个错误让我无法使用方括号语法......

    <#if strVal=aNode || item["link[@id='${aNode}']"]?has_content>
        <#assign cssClass> class="active"</#assign>
    <#else>
        <#assign cssClass></#assign>
    </#if>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2011-11-21
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多