0

我正在尝试使用 echo 服务测试此 XForm 的提交(我有自己的 echo Xquery 脚本,但也尝试使用基于 Web 的脚本,您可以在代码示例中看到)。我的检查显示 xforms-submit-done 事件确实被触发,但提交资源属性中的脚本没有被调用。相反,我在其中得到一个空白页面,并且 url 保持不变。

代码如下。

<html xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Movie Review Selector</title>
        <model xmlns="http://www.w3.org/2002/xforms">
            <instance id="movies">
                <movies xmlns="">
                    <movie id=""></movie>
                </movies>
            </instance>
            <submission id="save" resource="http://xformstest.org/cgi-bin/echo.sh" method="post" replace="all">
                <xf:message ev:event="xforms-submit-error" level="modal">Submission Error<xf:output value="event('error-type')"></xf:output>
                </xf:message>
            </submission>
        </model>
    </head>
    <body>
        <fieldset>
            <legend>
                <h3>Movie Selector</h3>
            </legend>
            <group xmlns="http://www.w3.org/2002/xforms" ref="instance('movies')">
                <repeat nodeset="movie" id="idx">
                    <input ref="@id">
                        <label>Movie Id</label>
                    </input>
                    <trigger>
                        <label>Delete</label>
                        <delete nodeset="." ev:event="DOMActivate"></delete>
                    </trigger>
                </repeat>
                <trigger>
                    <label>Add</label>
                    <action ev:event="DOMActivate">
                        <insert nodeset="movie"></insert>
                        <setvalue ref="movie[last()]/@id" value=""></setvalue>
                    </action>
                </trigger>
                <submit submission="save">
                    <label>Submit</label>
                </submit>
            </group>
        </fieldset>
    </body>
</html>
4

1 回答 1

1

由于浏览器的限制,不能在 XSLTForms 中使用 POST 方法replace="all"

相反,您必须使用method="xml-urlencoded-post",这是一种仅适用于 XSLTForms 的 hack。您不会在服务器中获得纯 XML 正文,但它将位于名为postdata

看看这个线程以获得更深入的解释:http: //sourceforge.net/p/xsltforms/mailman/message/24455248/

XQuery 脚本应该使用request:get-parameterandxmldb:decode来获取文档。像这样的东西:

let $p := request:get-parameter( "postdata", "" );
let $doc := xmldb:decode( $p );
return $doc
于 2015-02-04T13:05:35.550 回答