我有一个包含三个行业的菜单和一个“有效”选项:
<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在教育行业,因此在他们的页面上,Back和Next将转到教育行业内的其他公司)。我在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>
这可以使用Industry作为默认排序键,基于我编写的代码。我的问题是这样的:当用户点击菜单中的“ACTIVE”时,我想这样做,Back和Next按钮将浏览@ Status =“Active”属性,INSTEAD of Industry。
最好的方法是什么?我看了很多不同的解决方案,但我似乎无法弄清楚这样做的最好方法......谢谢!
答案 0 :(得分:0)
首先,我会尝试摆脱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>