xsl: if test "Если страница является потомком или я другой страницы .." - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь создать меню, в котором данная вкладка будет выделена, если пользователь находится на соответствующей странице или на подстраницах соответствующей страницы. Я новичок в XSL и мне нужно отредактировать некоторые вещи для работы. Дайте следующую настройку:

образец / макет xml

   <Page ID="x44">
     <Page ID="x52" />
        <Page ID="x51" />
        <Page ID="x50" />
     </Page>
    <Page ID="x46">
     <Page ID="x22" />
        <Page ID="x21" />
        <Page ID="x20" />
   </Page>

а это xsl

 <li>
    <xsl:attribute name="class" >
             <xsl:if test="descendant-or-self::*[$pageid = 'x44']">
                <xsl:text>active</xsl:text>
             </xsl:if>
            </xsl:attribute>

Это дает х4, чтобы выделить, но ни один из его детей: 52, 51, 50. Любая помощь или толчок в правильном направлении приветствуется! Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 января 2012

Ваш тест xsl:if будет проходить только элементы, у которых есть либо x44, либо потомок, который имеет; ваш x52 элемент не соответствует этому, x44 является родителем / предком, а не потомком.

Вы, вероятно, хотите это:

<xsl:if test="ancestor-or-self::*[$pageid = 'x44']">

или, возможно,

<xsl:if test="ancestor-or-self::Page[@ID = 'x44']">

0 голосов
/ 11 января 2012

Хотя вопрос неполный, как упомянуто Hon 'Dimitre, также я не могу найти Элемент для этого атрибута CLASS !! Я предполагаю, что вы хотите что-то вроде этого:

<test class="active" />

Тогда я подготовил код:

  <xsl:template match="/">
  <xsl:element name="test">
  <xsl:attribute name="class" >
    <xsl:if test="descendant-or-self::*[@ID = 'x44']">
      <xsl:text>active</xsl:text>
    </xsl:if>
  </xsl:attribute>
  </xsl:element>
  </xsl:template>

Используйте @ для атрибутов, и вместо * вы можете использовать имя элемента " Page "

Строка кода <xsl:if test="descendant-or-self::*[@ID = 'x44']"> возвращает true или false, если любой элемент, имеющий атрибут ID = 'x44' ..

Сообщите нам требуемый результат, если вы не удовлетворены ответом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...