1

我編寫的基於http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0#The_var_element以下XForms文檔:XSLTforms或betterForm支持變量(var)嗎?

<?xml-stylesheet type="text/xsl" href="../xsltforms/xsltforms.xsl"?> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"> 
    <head> 
     <title>var-demo</title> 
     <xf:model> 
      <xf:instance> 
       <data xmlns=""> 
        <PersonGivenName>Kilroy</PersonGivenName> 
       </data> 
      </xf:instance> 
     </xf:model> 
    </head> 
    <body> 
     <xf:output value="PersonGivenName"><xf:label>PersonGivenName=</xf:label></xf:output> 

     <xf:var name="pg_name" value="PersonGivenName"/> 
     <xf:output value="pg_name"><xf:label>pg_name=</xf:label></xf:output> 
    </body> 
</html> 

這是非常簡單的:應該輸出(我認爲)基爾羅伊兩次,第一次從模型直接讀出,然後投入一個變量和打印的變量。

但產量只有

PersonGivenName=Kilroy 
pg_name= 

我已經使用存在-DB 2.0和EXIDE 2.0版嘗試這個。上面的代碼由XSLTforms處理;省略第一行,它由betterForm處理 - 但結果是相同的。

http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0中的章節「3.2.4.2變量範圍」後面的示例提示,如果使用變量的值,則需要$前綴,但XSLTforms和betterForm在將最後一個輸出更改爲value =「$時拋出異常pg_name」。上面的代碼似乎在語法上是正確的,但變量的值不會打印出來。有人可以解釋這一點嗎?

回答

1

對不起,變量尚未在XSLTForms中實現。

我經常爲「變量」定義一個專用實例。

-Alain

1

它們都沒有更好的表現。您可以使用模式Alain描述或使用我們在規範中出現之前實現的自定義簡單變量機制:

我們得到了<xf:setvariable name="foo" value="bar"/>實現。然後通過使用bf:appContext('foo') XPath函數,可以將結果變量與特定位置的'$'符號一起使用,或者(更節省地)使用。

  • Joern
+0

對不起看到我的代碼示例中被剝離出來 - 無需重寫括號: XF:setvariable NAME = 「foo」 的值= 「酒吧」。 xf:setvariable是一個xforms動作,你可以調用允許的任何動作。 –