Изменение навигации между узлами (XSLT) - PullRequest
1 голос
/ 18 июня 2010

У меня есть меню с тремя отраслями и «активная» опция:

<ul>
<li id="p_active"><a href="active.xml">Active</a></li>
<li id="p_education"><a href="education.xml">Education</a></li>
<li id="p_energy"><a href="energy.xml">Energy</a></li>
<li id="p_services"><a href="services.xml">Services</a>
</li>
</ul>

В каждой отрасли есть несколько компаний, кроме того, каждая из них является «Активной» или «Неактивной»..

При переходе на страницу компании есть кнопки BACK и NEXT, которые позволяют перемещаться по основному списку компаний к соответствующей смежной компании в этой отрасли.

(т. Е. Компания ABC работает в сфере образования, поэтому на их страницах «Назад» и «Далее» перейдут к другим компаниям в сфере образования).Я выполнил это в XSLT:

<xsl:choose>
    <xsl:when test="(company[@ind='Education'])">
    <xsl:value-of select="document('invest-port.xml')/portfolio/company[name=$name]/following-sibling::company[@ind='Education'][1]/link"/>
</xsl:when>
    <xsl:when test="(company[@ind='Energy'])">
    <xsl:value-of select="document('invest-port.xml')/portfolio/company[name=$name]/following-sibling::company[@ind='Energy'][1]/link"/>
</xsl:when>
</xsl:choose>

Пример XML-файла компании:

<fragment>
    <company ind="Education" stat="Active">Company ABC</company>    
    <hq>Boston, MA</hq>
    <desc>This company makes products for schools</desc>
</fragment>

Это работает, когда в качестве ключа сортировки по умолчанию используется Промышленность на основе написанного мной кода.,Моя проблема заключается в следующем: я хочу сделать так, чтобы, когда пользователь нажимал «ACTIVE» в меню, кнопки «Назад» и «Далее» перемещались по атрибутам @ status = «Active», INSTEAD of Industry.

Каков наилучший способ приблизиться к этому?Я рассмотрел множество различных решений, но, похоже, я не могу найти лучший способ сделать это ... Спасибо!

1 Ответ

0 голосов
/ 18 июня 2010

Прежде всего, я бы попытался избавиться от choose и попытаться использовать переменную для представления выбранной отрасли:

company[@ind = $ind]

Затем введите choose, чтобы определить, каким образом высобираемся найти следующую / предыдущую компанию.

<xsl:choose>
    <xsl:when test="$selectionMethod = 'Active'">
        <xsl:value-of select="document('invest-port.xml')/portfolio/company[name=$name]/following-sibling::company[@stat='Active'][1]/link"/>
    </xsl:when>
    <xsl:otherwise>
        existing code
    </xsl:otherwise>
</xsl:choose>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...