Xml xsl:if-test";如果页面是另一页面的后代或自身……”;
我试图创建一个菜单,如果用户位于相应页面或相应页面的子页面上,则会突出显示给定选项卡。我是XSL新手,需要为工作编辑一些内容。提供以下设置: 示例/模拟xmlXml xsl:if-test";如果页面是另一页面的后代或自身……”;,xml,xslt,Xml,Xslt,我试图创建一个菜单,如果用户位于相应页面或相应页面的子页面上,则会突出显示给定选项卡。我是XSL新手,需要为工作编辑一些内容。提供以下设置: 示例/模拟xml <Page ID="x44"> <Page ID="x52" /> <Page ID="x51" /> <Page ID="x50" /> </Page> <Page ID="x46"> &l
<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>
积极的
这将使x44高亮显示,但没有其子项:52、51、50。任何帮助或推动在正确的方向是感激的!谢谢 尽管问题如hon'Dimitre所述不完整,但我也找不到该属性的元素类!!我假设您想要这样的输出:
<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>
积极的
使用@作为属性,可以使用元素名“页面”,而不是*
代码行
根据属性ID='x44'的任何元素的if返回true或false
如果您对答案不满意,请告诉我们所需的输出。您的
xsl:if
测试将只通过本身具有x44
的元素或具有该属性的后代的元素;您的x52
元素与此不匹配,x44
是父/祖先,而不是后代
你可能想要这个:
或者可能
您需要提供所需的确切输出——人们不喜欢猜测和浪费时间。