Почему эта переменная работает в nav, а не в теге body?

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} отображает имя текущей категории.

Поэтому я попытался поместить его в тег тела:

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

Но ничего не происходит. Вы просто получаете что-то вроде <body class>

Что я делаю не так?

Теги:
xslt

2 ответа

1

Не видя остальной части кода, почти невозможно сказать, однако я бы догадался, что в тот момент, когда создается заглушка body нет ребенка cat_slug чтобы вытащить значение.

0

Синтаксис {cat_slug} самом деле не является переменной. Переменные представляются с использованием символа $. Кудрявые фигурные скобки указывают, что это "шаблон значения атрибута" и означает, что выражение оценивается, а не выводится буквально.

В этом случае, глядя на выражение в фигурных скобках, он будет искать элемент cat_slug. Это относительное выражение, означающее, что cat_slug будет дочерним элементом элемента, на котором вы сейчас находитесь.

Первое его использование - это

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

Но это происходит в xsl: for-each, когда вы повторяете элементы row0

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

Это говорит о том, что cat_slug является дочерним элементом row0. Поскольку ваш <body> наиболее вероятно вне этого цикла xsl: for-each, он будет искать элемент cat_slug в другом месте, где не существует.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню