我正在探索用于生成->内容的meme。我几乎没有XSLT经验。
我很好奇XSLT中有什么机制可以用来处理抽象或“重构”。
例如,使用通用HTML和服务端包含,可以将许多页面模板化并分解为常见的页眉、导航和页脚段,页面本身基本上就是正文。
常见的标记语言JSP、PHP、ASP甚至允许所有这些段都有动态内容(比如将用户名添加到每个标题块中)。
JSP更进一步,允许您创建标记文件,该文件可以接受在生成内容时使用的参数,甚至可以在标记本身内包围和处理内容。
我很好奇XSLT中也有类似的功能。对于创建HTML页面这样的事情,有哪些工具可以使XSLT块可重用?
发布于 2008-10-03 15:53:06
对于我自己的项目,这就是我如何划分我的页面。我的每个XSL都导入了一个template.xsl文件。大多数页面只有template.xsl,但一些页面,如购物车等,需要自己的,因为它们解析的数据种类不同。
<page title="Home">
<navigation>
<!-- something here -->
</navigation>
<main>
<!-- something here -->
</main>
</page>这是我的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>我的css标签如何响应的示例。请注意,它调用的css-extended. css只有将应用于所有页面的公共css。有些页面需要更多。这些可以覆盖css-extended。请注意,这是必需的,因为如果页面调用模板但没有在任何地方定义它,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" />我的容器将以类似的方式工作--定义通用的东西,然后每个页面只能提供一个实现。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> 它对我来说非常好用。如果有任何问题我可以回答你,请让我知道。
发布于 2008-10-03 15:37:53
模板,包括。
Xsl与其他编程语言有很大的不同。Its rule based.
我建议您先阅读something中关于Xslt的内容,然后再问一些更具体的问题。
发布于 2008-10-03 15:44:31
您可以使用xsl Include和Import语句来抽象页面的各个部分。XSLT本身在很大程度上可以重现标记文件类型的行为。您可以使用所需的标签编辑xml数据文件。同时,当您的xsl模板遇到这些标记时,它们将知道如何处理这些标记。
https://stackoverflow.com/questions/167453
复制相似问题