我有一个类似于下面的 XML
<siteMap>
<siteMapNode id="1232" title="Home" url="www.google.com" depth="0" use_as_default="Yes">
<siteMapNode id="" title="Resourses" url="" depth="1" blue_button="False">
<siteMapNode id="" title="Project" url="" depth="2" blue_button="False" />
<siteMapNode id="" title="Music" url="" depth="2" blue_button="False" />
<siteMapNode id="" title="Vedio" url="" depth="2" blue_button="False" />
<siteMapNode id="" title="Party" url="" depth="2" blue_button="False" /></siteMapNode>
</siteMapNode>
</siteMap>
在 XSLT 的某个地方,我想编写类似这样的代码
<xsl:template match="/">
<ul class="toplevel-menu group">
<xsl:apply-templates select="EXPERSSION1" />
</ul>
</xsl:template>
<xsl:template match="EXPRESSION2">
<li>
<a>
<xsl:attribute name="title">
<xsl:value-of select="@title"/>
</xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="@url"/>
</xsl:attribute>
<xsl:value-of select="@title"/>
</a>
</li>
</xsl:template>
如何编写 select="EXPERSSION1" 和 match="EXPRESSION2"
如果我想将深度属性传递给有人可以帮我在场景中构建 SELECT 和匹配表达式。
更新
有没有可能写出这样的东西——
<xsl:apply-templates select="child::*[@depth='2']">
<xsl:with-param name="depth" select="2" />
</xsl:apply-templates>
并如下使用它
<xsl:template match="sm:siteMapNode[@depth='2']">
<xsl:if test="child::*">
<xsl:apply-templates select="child::*">
<xsl:with-param name="depth" select="$depth+1" />
</xsl:apply-templates>
</xsl:if>
</xsl:template>
因为我必须更新一个现有的 xslt,并且希望更改最少以避免破坏任何东西