2013-03-18 40 views
0

我找不到解決此特定問題的任何現有帖子。希望對於更熟悉XSL的人來說,這是一個簡單的答案:我有一個XSL樣式表,應用於由零件檢驗軟件系統生成的XML文件,然後該零件檢驗軟件系統讀取生成的HTML代碼....基於變量的xsl 1.0文檔()引用

我會喜歡添加一個外部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

所以,你心裏有什麼是變量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> 

我猜你想以顯示特殊格式時Xlo值少,在這種情況下,你將需要:

<xsl:when test="X &lt; document('tolerances.xml')/l/lo"> 
+0

爲什麼,謝謝!我覺得這可能很簡單!至於邏輯錯誤,它只是看起來這樣,因爲其餘的條件格式繼續了另外一個或三個頁面,所以我把它排除在外。再次感謝。 – user2182103 2013-03-18 13:15:58