【问题标题】:Are variables (var) supported in XSLTforms or betterForm?XSLTforms 或 betterForm 是否支持变量 (var)?
【发布时间】:2013-07-17 12:08:53
【问题描述】:

我已经根据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 和 BetterForm 在将最后一个输出更改为 value=" 时都会抛出异常$pg_name”。上面的代码在语法上似乎是正确的,但是变量的值并没有打印出来。谁能解释一下?

【问题讨论】:

    标签: variable-assignment xforms exist-db xforms-betterform xsltforms


    【解决方案1】:

    它们也不是更好的形式。您可以使用 Alain 描述的模式或使用我们在规范中出现之前实现的自定义简单变量机制:

    我们有一个&lt;xf:setvariable name="foo" value="bar"/&gt; 实现。然后可以在某些地方将结果变量与“$”符号一起使用,或者(更节省)使用bf:appContext('foo') XPath 函数。

    • 乔恩

    【讨论】:

    • 抱歉看到我的代码示例被删除了 - 不带括号重写:xf:setvariable name="foo" value="bar"。 xf:setvariable 是一个 xforms 动作,你可以在任何允许动作的地方调用。
    【解决方案2】:

    抱歉,XSLTForms 中尚未实现变量。

    我经常为“变量”定义一个专用实例。

    -阿兰

    【讨论】:

      猜你喜欢
      • 2015-08-25
      • 2014-02-04
      • 2015-08-08
      • 2014-05-26
      • 2014-08-12
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多