基于变量的XSL 1.0文档()引用



我找不到任何回答这个特定问题的现有帖子。希望对于更熟悉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>

那么您想到的是变量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 &lt; document('tolerances.xml')/l/lo">

相关内容

  • 没有找到相关文章

最新更新