我是使用XSLT的新手。现在我得到了一个任务,其中一个问题要求我们基于新模式通过XSLT生成新的XML输出。我已经做过了。这个问题的好处是,生成一个新的xsl文件来构建一个HTML表,根据前一个xsl文件输出的标准对结果进行排名。
例如,在原始XML中:
<PROPERTY>
<NAME>Abvc</NAME>
</PROPERTY>
并在第一个xsl文件中,我已将其更改为xml输出并重命名标记:
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="pro">
<xsl:apply-templates select="PROPERTY"/>
</xsl:element>
</xsl:template>
<xsl:template match="PROPERTY">
<xsl:attribute name="name">
<xsl:value-of select="NAME"/>
</xsl:attribute>
</xsl:template>
所以我的问题是,如果我想在另一个xsl 中使用上面的xsl 文件的输出,例如:
<xsl:template match="pro">
//do something here...
</xsl:template>
有可能吗?顺便说一下,我必须使用默认的xslt 1.0版本。它的要求。
感谢
答案 0 :(得分:0)
我在这里有一个简单的HTML输出:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="pro"/>
</xsl:template>
<xsl:template match="pro">
<html>
<body>
<table border="1">
<th>
<xsl:value-of select="'Header'"/>
</th>
<tr>
<td><xsl:value-of select="./@name"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
这就是你需要的吗?
祝你好运, 彼得
答案 1 :(得分:0)
是的,始终可以使用另一个样式表处理一个样式表的输出。在大规模应用中,它是创建模块化结构和可重用组件的重要方式,通常称为“流水线”。
构建管道的机制取决于您使用的技术。您可以使用Java程序,使用XProc,使用Ant或使用shell脚本来控制它。你甚至可以手工完成。有许多应用程序框架,如Orbeon,提供流水线支持。