来自以下xml:
<?xml version="1.0"?>
<lieferungen>
<artikel id="3526">
<name>apfel</name>
<preis stueckpreis="true">8.97</preis>
<lieferant>Fa. Krause</lieferant>
</artikel>
<artikel id="7866">
<name>Kirschen</name>
<preis stueckpreis="false">10.45</preis>
<lieferant>Fa. Helbig</lieferant>
</artikel>
<artikel id="3526">
<name>apfel</name>
<preis stueckpreis="true">12.67</preis>
<lieferant>Fa. Liebig</lieferant>
</artikel>
<artikel id="7789">
<name>Ananas</name>
<preis stueckpreis="true">8.60</preis>
<lieferant>Fa. Richard</lieferant>
</artikel>
</lieferungen>
我想创建一个如下所示的表:
为此,我写了以下xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="lieferungen">
<html>
<head>
<title>
<xsl:text>Lieferungen</xsl:text>
</title>
</head>
<body bgcolor="#ffffff">
<h1>
Lieferungen (Deliveries)
</h1>
<hr/>
<table border="1">
<tr>
<th>Nummer</th>
<th>Article</th>
<th>Price</th>
<th>Supplier</th>
</tr>
<xsl:apply-templates/>
</table>
</body>
<hr/>
<p>
</p>
</html>
</xsl:template>
<xsl:template match="artikel">
<tr>
<td>
<xsl:value-of select="@id"/>
</td>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="name">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="preis">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="lieferant">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
</xsl:stylesheet>
代码工作正常,我得到了我的表...但是,现在我想切换列,特别是我想切换第3列和第4列。 为此,我只需将模板的顺序切换为“preis”和“lieferant”,即现在的新订单:
<xsl:template match="lieferant">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="preis">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
其余代码是相同的。虽然这种方法没有用,但表中列的顺序保持不变。
因此,我的问题是:如何使用计算机
<xsl:template match="lieferant">
在第三个和
<xsl:template match="preis">
表格的第四栏?
答案 0 :(得分:2)
模板在样式表中出现的顺序没有意义(解决冲突时除外)。要切换列,请更改:
<xsl:template match="artikel">
<tr>
<td>
<xsl:value-of select="@id"/>
</td>
<xsl:apply-templates/>
</tr>
</xsl:template>
到:
<xsl:template match="artikel">
<tr>
<td>
<xsl:value-of select="@id"/>
</td>
<xsl:apply-templates select="name, lieferant, preis"/>
</tr>
</xsl:template>
也不要忘记切换列标签。
另请注意,您可以将最后三个模板合并为一个:
<xsl:template match="name | preis | lieferant">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
甚至将整个块缩短为:
<xsl:template match="artikel">
<tr>
<xsl:apply-templates select="@id, name, lieferant, preis"/>
</tr>
</xsl:template>
<xsl:template match="@id | name | preis | lieferant">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>