我根据http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0#The_var_element准备了以下 XForms 文档:
<?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>
这很简单:应该输出(我认为)两次 Kilroy,首先直接从模型中读取,然后放入一个变量并打印该变量。
但输出只是
PersonGivenName=Kilroy
pg_name=
我已经从 eXist-db 2.0 和 eXide 2.0 版尝试过这个。上面的代码是由 XSLTforms 处理的;省略第一行,它由 betterForm 处理 - 但结果是一样的。
http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0中的“3.2.4.2 变量范围”一章之后的示例表明,在使用变量的值时需要一个 $ 前缀,但两个 XSLTforms在将最后一个输出更改为 value="$pg_name" 时,betterForm 会抛出异常。上面的代码在语法上似乎是正确的,但是变量的值并没有打印出来。有人可以解释一下吗?