0
<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>

我需要来自这个 XML 的 2 个级别的 xslt 动态菜单和子菜单。我在这里需要这样的输出:

Enterprise
  ->Full fill ment 
             ->First Sub-Navigation
4

1 回答 1

1
<?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 文件结构是递归的,这将变得非常强大。您的代码将非常通用且非常简短。

于 2012-12-26T13:32:14.427 回答