0

我有一个名为framework.xsl的文件。我以前从未使用过 XSL。我想给身体当前类别的类。

我在这部分找到了一些可以帮助我的东西:

我看到了这个部分:

<ul id="navbar">
    <xsl:for-each select="page/departments/row0">
        <li>
            <a href="main-category/{cat_slug}"><xsl:value-of select="cat_name"/></a>
            <a href="javascript:void(0)" class="arrow"></a>
            <ul>
                <xsl:for-each select="row1">
                    <li>
                        <a href="subcategory/{../cat_slug}/{sub_cat_slug}">
                            <xsl:value-of select="sub_cat_name"/>
                        </a>
                    </li>
               </xsl:for-each>
            </ul>
        </li>
    </xsl:for-each>
</ul>

该变量{cat_slug}显示当前类别的名称。

所以我试着把它放在body标签中:

</head>
<body class="{cat_slug}">
    <div id="wrapper">
    <xsl:if test="$pms/pagename = 'home' and page/content/row0/f1/text()">

但什么也没有发生。你只是得到类似的东西<body class>

我究竟做错了什么?

4

2 回答 2

1

如果没有看到其余的代码,几乎不可能说,但是我猜想在body生成存根的地方没有cat_slug孩子可以从中提取值。

于 2013-09-23T04:58:49.593 回答
0

语法{cat_slug}实际上不是变量。变量使用$符号表示。花括号表示它是一个“属性值模板”,意味着它是要评估的表达式,而不是字面输出。

在这种情况下,查看花括号内的表达式,它将寻找一个名为cat_slug的元素。这是一个相对表达式,意味着它期望cat_slug是您当前定位的元素的子元素。

它的第一次使用是这样的

<a href="main-category/{cat_slug}">

但是当您迭代row0元素时,这会发生在xsl:for-each中

<xsl:for-each select="page/departments/row0">

这表明cat_slug是 row0 的子元素。由于您<body>很可能在此xsl:for-each循环之外,因此它将在不同的地方查找元素cat_slug,一个不存在的地方。

于 2013-09-23T07:35:24.253 回答