我正在探索用于生成Web内容的XML - > XSLT - > HTML meme.我的XSLT经验很少.
我很好奇XSLT中有哪些机制可用于处理抽象或"重构".
例如,对于通用HTML和服务端包含,可以将许多页面模板化并分解为具有(例如)公共标题,导航和页脚段的位置,并且页面本身基本上是正文.
常见的标记语言JSP,PHP,ASP,允许所有这些段具有动态内容(例如将用户名添加到每个标题块).
JSP通过允许您创建Tag文件甚至更远,它可以接受在生成内容时使用的参数,甚至可以包围和处理标记本身内容.
我很好奇在XSLT中完成了类似的功能.有什么设施可以为创建HTML页面之类的东西制作可重复使用的XSLT块?
Swa*_*ati 14
对于我自己的项目,这是我分页的方式.有一个template.xsl文件,由我的每个XSL导入.大多数网页只是有template.xsl,但一些网页,如购物车等必须的,因为不同种类的数据,他们分析自己.
<page title="Home">
<navigation>
<!-- something here -->
</navigation>
<main>
<!-- something here -->
</main>
</page>
Run Code Online (Sandbox Code Playgroud)
这是我的template.xsl的一个片段.我把所有常见的东西都扔进了这里,然后给了我的页面添加自己信息的机会call-template.
<xsl:template match="/page" name="page">
<html>
<head>
<title><xsl:value-of select="(@title)" /></title>
<xsl:call-template name="css" />
<xsl:call-template name="script" />
</head>
<body>
<xsl:call-template name="container" />
</body>
</html>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
我的css标签如何响应的一个例子.请注意,它调用css-extended.css只有适用于所有页面的公共css'.有些页面需要更多.那些可以覆盖css扩展.请注意,这是必需的,因为call-template如果页面调用模板但未在任何位置定义模板,则会失败.
<xsl:template name="css">
<link rel="stylesheet" type="text/css" href="{$cssPath}reset.css" />
<link rel="stylesheet" type="text/css" href="{$cssPath}style.css" />
<link rel="stylesheet" type="text/css" href="{$cssPath}layout.css" />
<xsl:call-template name="css-extended" />
</xsl:template>
<!-- This is meant to be blank. It gets overriden by implementing stylesheets -->
<xsl:template name="css-extended" />
Run Code Online (Sandbox Code Playgroud)
我的容器将以类似的方式工作 - 定义了常见的东西,然后每个页面只能提供一个实现.XSL中的默认实现.(中content)
<xsl:template name="container">
<div id="container">
<xsl:call-template name="header" />
<xsl:call-template name="content" />
<xsl:call-template name="footer" />
</div>
</xsl:template>
<xsl:template name="content">
<div id="content">
<div id="content-inner">
<xsl:call-template name="sideBar" />
<xsl:call-template name="main" />
</div>
</div>
</xsl:template>
<xsl:template name="main">
<div id="main">
<xsl:apply-templates select="main" />
<xsl:call-template name="main-extended" />
</div>
</xsl:template>
<!-- This is meant to be blank. It gets overriden by implementing stylesheets -->
<xsl:template name="main-extended" />
<xsl:template name="footer">
<div id="footer">
<div id="footer-inner">
<!-- Footer content here -->
</div>
</div>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
它对我来说非常漂亮.如果有任何问题我可以为您解答,请告诉我.
| 归档时间: |
|
| 查看次数: |
4845 次 |
| 最近记录: |