我有一个网页,其中包含附图中的网页和子页面。
有些子页面属于First pagge(About Patient Direct),他们设置了“不在菜单中显示”。
好的,我想创建一个xslt文件来生成这样的html内容:
菜单项1(包括主页 - 关于患者直接)
-submenu page 1 1
菜单项2(包括主页 - 关于患者直接)
-submenu第2页1
-submenu第2页2
我该怎么做?
这是我到目前为止所拥有的
<?xml version="1.0" encoding="UTF-8"?>
] GT;
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:param name="currentPage"/>
<!-- Input the documenttype you want here -->
<xsl:variable name="level" select="1"/>
<xsl:template match="/">
<xsl:if test="$currentPage/@id = $currentPage/ancestor-or-self::* [@level=$level]/@id">
<div class="column">
<h1>
<a href="#">
Home Page - I don't know what to write here
</a>
</h1>
</div>
</xsl:if>
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<div class="column">
<h1>
<xsl:choose>
<xsl:when test="name() = 'Link'">
<a href="{current()/linkUrl}" target="_blank">
<xsl:value-of select="@nodeName" />
</a>
</xsl:when>
<xsl:otherwise>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</xsl:otherwise>
</xsl:choose>
</h1>
</div>
</xsl:for-each>
</xsl:template>
答案 0 :(得分:3)
我终于成功地做了我一直在寻找的事情。以下是可能正在寻找相同功能的人的代码
<?xml version="1.0" encoding="UTF-8"?>
] GT;
<xsl:template name="menu">
<xsl:param name="level"/>
<xsl:variable name="RootNode" select="umbraco.library:GetXmlNodeById(1050)" />
<div class="column">
<h1>
<a href="{umbraco.library:NiceUrl($RootNode/@id)}" style="width:200px;">
<xsl:value-of select="$RootNode/@nodeName"/>
</a>
</h1>
<xsl:call-template name="submenu_Homepage">
</xsl:call-template>
</div>
<xsl:if test="count($currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']) > '0'">
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<div class="column">
<h1>
<xsl:choose>
<xsl:when test="name() = 'Link'">
<a href="{current()/linkUrl}" target="_blank">
<xsl:value-of select="@nodeName" />
</a>
</xsl:when>
<xsl:otherwise>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</xsl:otherwise>
</xsl:choose>
</h1>
<xsl:if test="count(current()/* [@isDoc and string(umbracoNaviHide) != '1']) > '0'">
<xsl:call-template name="submenu">
<xsl:with-param name="level" select="$level+1"/>
</xsl:call-template>
</xsl:if>
</div>
</xsl:for-each>
</xsl:if>
</xsl:template>
<xsl:template name="submenu">
<xsl:param name="level"/>
<ul class="level_{@level}">
<xsl:for-each select="current()/*[@isDoc and string(umbracoNaviHide) != '1']">
<li>
<xsl:if test="position() != last()">
<xsl:attribute name="class">bottom_border</xsl:attribute>
</xsl:if>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
<!--case when we have third menu level-->
<xsl:if test="count(current()/* [@isDoc and string(umbracoNaviHide) != '1']) > '0'">
<xsl:call-template name="submenu">
<xsl:with-param name="level" select="$level+1"/>
</xsl:call-template>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template name="submenu_Homepage">
<ul>
<xsl:for-each select="$currentPage/ancestor-or-self::*/* [@isDoc and string(umbracoNaviHide) = '1']">
<li>
<xsl:if test="position() != last()">
<xsl:attribute name="class">bottom_border</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="name() = 'Link'">
<a href="{current()/linkUrl}" target="_blank">
<xsl:value-of select="@nodeName" />
</a>
</xsl:when>
<xsl:otherwise>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:for-each>
</ul>
</xsl:template>