2013-09-23 36 views
0

我有一個名爲framework.xsl的文件。我從來沒有使用過XSL。我想給身體提供當前類的類。爲什麼這個變量在導航中工作,但不在body標籤中?

我發現了一些東西,可以幫助我在這個部分:

我看到這個部分:

<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}顯示當前類別的名稱。

於是,我把它放在身體標記:

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

但沒有任何反應。你只是得到像<body class>

我在做什麼錯了?

回答

1

沒有看到代碼的其餘部分幾乎不可能說,但是我猜測在body存根被生成的位置沒有cat_slug孩子從中拉取值。

0

語法{cat_slug}實際上並不是一個變量。變量使用$符號表示。花括號表明它是一個「屬性值模板」,意味着它是表達式進行評估,而不是字面輸出。

在這種情況下,查看大括號內的表達式,它將查找名爲cat_slug的元素。這是一個相對錶達式,這意味着它期望cat_slug是您當前定位的元素的子元素。

其使用的第一次出現是這個

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

但這發生在XSL:當你迭代0行元素

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

這表明的for-each cat_slugrow0的子元素。由於您的<body>最有可能在此xsl:for-each循環之外,因此它將在不同位置查看元素cat_slug,其中不存在。

相關問題