我找不到任何解决此特定问题的现有帖子。希望对于更熟悉XSL的人来说,这是一个简单的答案:我有一个XSL样式表,它应用于由零件检测软件系统生成的XML文件,然后读取生成的HTML代码....
我想添加一个外部XML文件,其中包含每个不同部件号的容差。所以我想象XSL表需要使用document()引用,文档名称或文档中的元素由源XML文件中的元素名称定义。希望包含的代码说明了我想要做的事情。显然它不能正常工作,也只是整个文件的片段....
感谢您提供帮助或链接到我可以学习的东西。
<xsl:variable name="pname">
<xsl:value-of select="//NAME/."/>.xml
</xsl:variable>
<xsl:template match="TUBE_LRA_ERRORS">
<table border="0" style="font-size:18pt">
<tr><th><xsl:copy-of select="//NAME/."/></th></tr>
<tr><th><xsl:value-of select="//REPORT/REPORT_TIME"/></th></tr>
<tr><th>LRA Errors</th></tr>
</table>
<table border="1" style="font-size:26pt">
<tr align="center" bgcolor="#cccccc">
<td>#</td><td>L</td><td>R</td><td>A</td>
</tr>
<xsl:for-each select="ERROR">
<tr>
<td><xsl:value-of select="position()"/></td>
<xsl:choose>
<xsl:when test="X > document('$pname')/l/hi">
<td bgcolor="00FFFF" style="font-weight:600">
<xsl:value-of select="X"/></td>
</xsl:when>
<xsl:when test="X > document('tolerances.xml')/l/lo">
<td bgcolor="ffffff" style="font-weight:200">
<xsl:value-of select="X"/></td>
</xsl:when>
<xsl:otherwise>
答案 0 :(得分:0)
所以你要记住的是变量pname
将具有容差文件的名称,并且你想要检查它的值?应该可以这样做。
这不起作用:
<xsl:when test="X > document('$pname')/l/hi">
<td bgcolor="00FFFF" style="font-weight:600">
<xsl:value-of select="X"/>
</td>
</xsl:when>
因为引号中有“$ pname”,这会导致它查找名为“$ pname”的文件。但是,这会加载名称为$pname
的文件(请注意我删除了$pname
周围的单引号:
<xsl:when test="X > document($pname)/l/hi">
<td bgcolor="00FFFF" style="font-weight:600">
<xsl:value-of select="X"/>
</td>
</xsl:when>
或者如果您想使用名称为$pname
加上“.xml”的文件,您可以这样做:
<xsl:when test="X > document(concat($pname, '.xml'))/l/hi">
<td bgcolor="00FFFF" style="font-weight:600">
<xsl:value-of select="X"/>
</td>
</xsl:when>
我想你在这里可能有一个逻辑错误:
<xsl:when test="X > document('tolerances.xml')/l/lo">
<td bgcolor="ffffff" style="font-weight:200">
<xsl:value-of select="X"/>
</td>
</xsl:when>
我猜你想在X
小于 lo
值时显示特殊格式,在这种情况下你需要:
<xsl:when test="X < document('tolerances.xml')/l/lo">