我有这个xslt代码
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title></title>
<link rel="stylesheet" href="css/xsl_style.css" type="text/css"/>
</head>
<body>
<div class="tableStyle" >
<table id="products_table">
<tbody>
<tr bgcolor="#B5E4EA">
<td>A/A</td>
<td>Product Name</td>
<td>Price</td>
<td>Corpration</td>
<td>Category</td>
</tr>
<xsl:variable name="allProducts" select="auction_products/product" />
<xsl:for-each select="$allProducts">
<xsl:sort select="category"/>
<xsl:variable name="pos" select="position()" />
<tr>
<td><xsl:value-of select="$allProducts[$pos]/count_products"/></td>
<td><a href="offer.php"><xsl:value-of select="product_name"/></a></td>
<td><a href="offer.php"><xsl:value-of select="price"/></a></td>
<td><a href="offer.php"><xsl:value-of select="corporation"/></a></td>
<td><a href="offer.php"><xsl:value-of select="category"/></a></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我想通过xslt用排序的数据创建一个新的xml文件。在xslt版本1中不可能这样做吗?我尝试了xsl:document
,但我没有成功。
答案 0 :(得分:0)
如果我理解正确,您希望从同一个XSLT(1.0)样式表中输出多个文档。
正如此链接:Splitting XML into multiple files with XSLT建议,使用XSLT 1.0中提供的方法无法做到这一点。您可以使用EXSLT(http://www.exslt.org/exsl/elements/document/index.html)扩展XSLT 1.0设置,也可以使用XSLT 2.0。
如果您决定使用XSLT 2.0,您显然需要将版本信息更改为:
<xsl:stylesheet version="2.0">
然后,将result-document
合并到样式表中。我建议你在网上寻找适当的信息,例如在这里:http://saxonica.com/documentation9.4-demo/html/xsl-elements/result-document.html。
请注意,您还需要一台能够XSLT 2.0
的处理器,例如Saxon。当你思考这个时,还要考虑是否有必要让一个样式表输出几个文件以及为什么。
答案 1 :(得分:0)
我可以想到使用XSLT 1.0的两种方法 - 一种是将排序后的数据简单地嵌入到输出html中,从中提取所需数据应该是一个相对简单的事情。
另一种方法是使用xsl:message输出您想要的数据作为消息,并实现记录该输出的机制。