有人可以帮我调试这个XSLT吗?我不能花太多时间用这个,因为我本周有很多事要做,我已经尝试了至少半个小时,但仍然找不到它有什么问题。我在XSLT方面的技能是有限的,我们对课堂上的工作要求太多了,而且,除了抱怨有关人物(á,é......)之外,Firefox没有太多帮助。
这是一个贴心链接,主要是因为代码太大了:http://pastie.org/6452944
再次,谢谢!
答案 0 :(得分:3)
一个体面的XML编辑器可能会告诉你问题是什么:
<table>
标记,您应该有一个结束</table>
标记。&eq;
在标准XML中毫无意义;你应该使用=
<xsl:choose>
不允许select
属性还有一个逻辑错误:
@observaciones = urgente
测试@observaciones
是否等于节点 urgente
(在这种情况下不存在)。您需要使用@observaciones = 'urgente'
。当这些修复后,我想它会起作用。这是一个固定版本:
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/empresa">
<html>
<head>
<title>
<xsl:value-of select="sede/nombre" />
</title>
<link rel="stylesheet" href="empresa.css" />
</head>
<body>
<table>
<tr class="titulo">
<td>
<p>
<xsl:value-of select="sede/nombre" />
</p>
</td>
<td rowspan="2">
<img alt="empresa" src="empresa.png" />
</td>
</tr>
<tr class="subtitulo">
<td>
<p>Albaran</p>
</td>
</tr>
<xsl:apply-templates select="pedido">
<xsl:sort select="@id" />
</xsl:apply-templates>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="pedido">
<tr class="cuerpo">
<td rowspan="3">
<span>
<xsl:value-of select="sucursal/nombre" />
</span>
<br />
<span>
<xsl:value-of select="sucursal/region" />
</span>
</td>
</tr>
<tr class="fecha">
<td>
<p>
Albaran con fecha de: <xsl:value-of select="fecha" />
</p>
</td>
</tr>
<tr class="npedido">
<xsl:apply-templates select="@id" />
</tr>
<tr class="articulos">
<td>
<table>
<tr>
<th>
<span>Cod. de articulo</span>
</th>
<th>
<span>N. de unidades</span>
</th>
<th>
<span>Precio por unidad</span>
</th>
<th>
<span>Observaciones</span>
</th>
</tr>
<xsl:apply-templates select="articulo">
<xsl:sort select="@id" />
</xsl:apply-templates>
</table>
</td>
</tr>
<tr class="observaciones">
<td>
<xsl:apply-templates select="@observaciones[. = 'urgente' or
. = 'incompleto']" />
</td>
</tr>
</xsl:template>
<xsl:template match="articulo">
<tr>
<xsl:apply-templates select="@id" />
<xsl:apply-templates select="@cant" />
<xsl:apply-templates select="@precioud" />
<xsl:call-template name="Cell">
<xsl:with-param name="value" select="@observaciones" />
</xsl:call-template>
</tr>
</xsl:template>
<xsl:template match="articulo/@* | pedido/@id"
name="Cell">
<xsl:param name="value" select="." />
<td>
<span>
<xsl:value-of select="$value" />
</span>
</td>
</xsl:template>
<xsl:template match="@observaciones">
<strong>
<xsl:value-of select="concat(translate(substring(., 1, 1), 'it', 'IT'),
substring(., 2))"/>
</strong>
</xsl:template>
</xsl:stylesheet>