<xml>
<HeaderMenu>
<headerMenuId>1</headerMenuId>
<headerMenuName>Enterprise</headerMenuName>
<headerMenuSort>1</headerMenuSort>
<subMenu>
<subMenuId>1</subMenuId>
<submenuname>Full fill ment </submenuname>
<submenuDispayOrderId>1</submenuDispayOrderId>
<PageSections>
<pagesectionId>1</pagesectionId>
<PageSecName>First Sub-Navigation</PageSecName>
<PageSecDescription>Dummy</PageSecDescription>
<PageSecDispayOrderId>1</PageSecDispayOrderId>
</PageSections>
</subMenu>
</HeaderMenu>
</xml>
我需要xslt动态菜单和来自此XML的2个级别的子菜单。 我需要这样的输出:
Enterprise
->Full fill ment
->First Sub-Navigation
答案 0 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/xml/HeaderMenu">
<xsl:value-of select="headerMenuName" />
<xsl:apply-templates select="subMenu" />
</xsl:template>
<xsl:template match="subMenu">
-> <xsl:value-of select="submenuname" />
<xsl:apply-templates select="PageSections" />
</xsl:template>
<xsl:template match="PageSections">
-> <xsl:value-of select="PageSecName" />
</xsl:template>
</xsl:stylesheet>
XSLT是一种声明性语言:您不必使用条件或循环。始终尝试使用apply-templates
代替xsl:for-each
和xpath条件而不是xsl:if
。
请注意,如果您的XML文件结构是递归的,这将变得非常强大。你的代码非常通用而且很短。