我有一个名为 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>
我做错了什么?
答案 0 :(得分:1)
在没有看到代码的其余部分的情况下几乎不可能说,但是我猜想在生成body
存根的时候,没有cat_slug
个子来从中提取值。
答案 1 :(得分: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 ,其中一个位置是“存在。