【发布时间】:2014-05-23 14:00:10
【问题描述】:
我开始使用 XSL 和 XML 进行开发以派生 HTML。我正在为此获得一个有效的 XSLT 模板。
我一直在尝试让正确的 XSL 应用于表示网站菜单的结构化 XML 数据结构。
结果应该类似于:
我作为数据源的 XML 是:
<?xml version="1.0" encoding="utf-8" ?>
<SMARTSMenu>
<Menu Type="Home" Caption="Home"></Menu>
<Menu Type="BankingFulfillment" Caption="Initiate Request"></Menu>
<Menu Type="Drafts" Caption="Drafts"></Menu>
<Menu Type="SearchManageCase" Caption="Search Requests"></Menu>
<Menu Type="PendingApproval" Caption="Pending Approval"></Menu>
<Menu Type="MyWorkQueue" Caption="My Work Queue"></Menu>
<Menu Type="ManagementTools" Caption="Management Tools"></Menu>
<Menu Type="Administration" Caption="Administration">
<Menu Type="Administration" Caption="General Administration"></Menu>
<Menu URL="page1.html" Type="Administration" Caption="Maintain Wire Reference"></Menu>
<Menu URL="page1.html" Type="Administration" Caption="Maintain Associate Information"></Menu>
<Menu URL="page1.html" Type="Administration" Caption="Maintain Reason for Claim"></Menu>
<Menu URL="page1.html" Type="Administration" Caption="Maintain Request Information"></Menu>
<Menu URL="page1.html" Type="Administration" Caption="Unlock Request"></Menu>
<Menu URL="page1.html" Type="Administration" Caption="AuditReport"></Menu>
</Menu>
<Menu Type="Administration" Caption="Maintain Email">
<Menu URL="page2.html" Type="Administration" Caption="Maintain Email Template"></Menu>
<Menu URL="page2.html" Type="Administration" Caption="Maintain Template to Request Association"></Menu>
</Menu>
<Menu Type="Administration" Caption="SR Remedy">
<Menu URL="page3.html" Type="Administration" Caption="Remedy SR"></Menu>
<Menu URL="page3.html" Type="Administration" Caption="Move SR to Letter Queue"></Menu>
</Menu>
</SMARTSMenu>
我试图生成 XSLT 的 HTML 是:
<div class="maiNav meganav">
<nav>
<ul class="maiNav-nav horizontal">
<li id="navHome"><a href="#">Home</a></li>
<li id="navInitiate" class="dropdown meganav-fullwidth actve"><a class="dropdown-toggle" href="#" data-toggle="dropdown">Initiate Request</a></li>
<li id="navDrafts"><a href="#">Drafts</a></li>
<li id="navSearch"><a href="#">Search Requests</a></li>
<li id="navPending" class="disabled"><a href="#">Pending Approval</a></li>
<li id="navTools"><a href="#">Management Tools</a></li>
<li id="navAdmin" class="last dropdown meganav-fullwidth"><a class="dropdown-toggle" href="#" data-toggle="dropdown">Administration<b class="caret"></b></a>
<ul class="dropdown-menu temp">
<li>
<div class="meganav-content">
<div class="row">
<div class="grid-12">
<h3 class="dropdown-header">General Administration</h3>
<ul>
<li><a href="#">Maintain Wire Reference</a></li>
<li><a href="#">Maintain Associate Information</a></li>
<li><a href="#">Maintain Reason for Claim</a></li>
<li><a href="#">Maintain Request Information</a></li>
<li><a href="#">Unlock Request</a></li>
<li><a href="#">AuditReport</a></li>
</ul>
</div>
<div class="grid-12">
<h3 class="dropdown-header">Maintain Email</h3>
<ul>
<li><a href="#">Maintain Email Template</a></li>
<li><a href="#">Maintain Template to Request Association</a></li>
</ul>
</div>
<div class="grid-12">
<h3 class="dropdown-header">SR Remedy</h3>
<ul>
<li><a href="#">Remedy SR</a></li>
<li><a href="#">Move SR to Letter Queue</a></li>
</ul>
</div>
</div>
</div>
</li>
</ul>
</li>
</ul>
</nav>
</div>
我的 XSLT 看起来像这样(正在进行中):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title></title>
</head>
<body>
<div class="maiNav meganav">
<nav>
<ul class="maiNav-nav horizontal">
<li id="navHome"><a href="#"><xsl:value-of select="SMARTSMenu/Menu[1]/@Caption" /></a></li>
<li id="navInitiate" class="dropdown meganav-fullwidth actve"><a class="dropdown-toggle" href="#" data-toggle="dropdown"><xsl:value-of select="SMARTSMenu/Menu[2]/@Caption" /></a></li>
<li id="navDrafts"><a href="#"><xsl:value-of select="SMARTSMenu/Menu[3]/@Caption" /></a></li>
<li id="navSearch"><a href="#"><xsl:value-of select="SMARTSMenu/Menu[4]/@Caption" /></a></li>
<li id="navPending" class="disabled"><a href="#"><xsl:value-of select="SMARTSMenu/Menu[5]/@Caption" /></a></li>
<li id="navTools"><a href="#"><xsl:value-of select="SMARTSMenu/Menu[6]/@Caption" /></a></li>
<li id="navAdmin" class="last dropdown meganav-fullwidth"><a class="dropdown-toggle" href="#" data-toggle="dropdown"><xsl:value-of select="SMARTSMenu/Menu[7]/@Caption" /><b class="caret"></b></a>
<ul class="dropdown-menu temp">
<li>
<div class="meganav-content">
<div class="row">
<div class="grid-12">
<h3 class="dropdown-header">General Administration</h3>
<ul>
<xsl:for-each select="//Menu/@Administration">
<ul class="maiNav-nav horizontal">
<li id="navHome">ff <a href="#">vv<xsl:value-of select="/Menu/@Caption"/></a></li>
</ul>
</xsl:for-each>
</ul>
</div>
<div class="grid-12">
<h3 class="dropdown-header">Maintain Email</h3>
<ul>
<li><a href="#">Maintain Email Template</a></li>
<li><a href="#">Maintain Template to Request Association</a></li>
</ul>
</div>
<div class="grid-12">
<h3 class="dropdown-header">SR Remedy</h3>
<ul>
<li><a href="#">Remedy SR</a></li>
<li><a href="#">Move SR to Letter Queue</a></li>
</ul>
</div>
</div>
</div>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
是的,这是一个非常典型的 XSLT 应用。你有任何 XSLT 可以开始吗?
-
它基本上是整个 html,xslt 用作文字替换。我希望让它更智能并循环遍历顶级节点和子节点。
-
您的意思是,您的 XSLT 目前是完全静态的,不依赖于源 XML?
-
我正在使用这样的东西来获取完整 html 骨架中的 xml 数据点:
-
我的解决方案对你有用吗?