Orbeon自动填充 - prolog中不允许使用内容

时间:2011-10-07 09:46:50

标签: service autocomplete web orbeon

我正在尝试将动态模式下的自动完成组件添加到使用Orbeon Form Builder(版本为Orbeon Forms 3.9.0 + .stable.201109261742 PE)创建的表单。

下面的xml是一个简单的测试表单,其中包含自动完成功能,可从公共Web服务(当前具有静态请求主体)检索数据。 第一次自动完成加载数据时,它工作正常:项目显示在列表中。但第二次,当我输入另一个字符来缩小搜索结果范围时,或者当我从列表中选择一个项目时,我收到错误消息“prolog中不允许内容”。

如果我忽略错误并继续,则错误将更改为“获得意外的请求序列号”。

我不明白为什么它只能在第一次工作,因为Web服务返回的数据总是因为静态请求体而相同。

下面是测试表格的完整xml。

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
            xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
            xmlns:xi="http://www.w3.org/2001/XInclude"
            xmlns:ev="http://www.w3.org/2001/xml-events"
            xmlns:xforms="http://www.w3.org/2002/xforms"
            xmlns:saxon="http://saxon.sf.net/"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:exforms="http://www.exforms.org/exf/1-0"
            xmlns:sql="http://orbeon.org/oxf/xml/sql"
            xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
            xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <xhtml:head>
              <xhtml:title>Test form</xhtml:title>
              <xforms:model id="fr-form-model">
                     <xforms:instance id="fr-form-instance">
                            <form>
                                   <section-1>
                                          <codeSearch/>
                                   </section-1>
                            </form>
                     </xforms:instance>
                     <xforms:bind id="fr-form-binds" nodeset="instance('fr-form-instance')">
                            <xforms:bind id="section-1-bind" nodeset="section-1">
                                   <xforms:bind id="codeSearch-bind" nodeset="codeSearch" name="codeSearch" type="xforms:string"/>
                            </xforms:bind>
                     </xforms:bind>
                     <xforms:instance id="fr-form-metadata" xxforms:readonly="true">
                            <metadata>
                                   <application-name>IRISbox</application-name>
                                   <form-name>Test</form-name>
                                   <title xml:lang="fr">Test form</title>
                                   <description xml:lang="fr"/>
                                   <author/>
                                   <logo mediatype="" filename="" size=""/>
                            </metadata>
                     </xforms:instance>
                     <xforms:instance id="fr-form-attachments">
                            <attachments>
                                   <css mediatype="text/css" filename="" size=""/>
                                   <pdf mediatype="application/pdf" filename="" size=""/>
                            </attachments>
                     </xforms:instance>
                     <xforms:instance id="fr-form-resources" xxforms:readonly="false">
                            <resources>
                                   <resource xml:lang="fr">
                                          <codeSearch>
                                                 <label>Cities</label>
                                                 <hint/>
                                                 <help/>
                                                 <alert/>
                                          </codeSearch>
                                          <section-1>
                                                 <label>Test</label>
                                                 <help/>
                                          </section-1>
                                   </resource>
                            </resources>
                     </xforms:instance>
                     <xforms:instance id="fr-service-request-instance" xxforms:exclude-result-prefixes="#all">
                            <request/>
                     </xforms:instance>
                     <xforms:instance id="fr-service-response-instance" xxforms:exclude-result-prefixes="#all">
                            <response/>
                     </xforms:instance>


            <!-- Search Cities by Name HTTP service -->
            <xforms:instance id="searchCitiesByName-instance" class="fr-service"
                                         xxforms:exclude-result-prefixes="#all">
                               <body>&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.restfulwebservices.net/ServiceContracts/2008/01"&gt;
                   &lt;soapenv:Header/&gt;
                   &lt;soapenv:Body&gt;
                      &lt;ns:GetCitiesByCountry&gt;
                         &lt;ns:Country&gt;USA&lt;/ns:Country&gt;
                      &lt;/ns:GetCitiesByCountry&gt;
                   &lt;/soapenv:Body&gt;
                &lt;/soapenv:Envelope&gt;</body>
            </xforms:instance>
            <xforms:submission id="searchCitiesByName-submission" class="fr-service"
                                       ref="instance('fr-service-request-instance')"
                                       resource="http://www.restfulwebservices.net/wcf/WeatherForecastService.svc"
                                       method="post"
                                       serialization="application/xml"
                                       mediatype="application/soap+xml; action=GetCitiesByCountry"
                                       replace="instance"
                                       instance="searchCitiesByName-instance"/>

                    <xforms:action ev:event="xforms-submit" ev:observer="searchCitiesByName-submission">
                           <xxforms:variable name="request-instance-name" select="'searchCitiesByName-instance'"
                                          as="xs:string"/>
                           <xforms:insert nodeset="instance('fr-service-request-instance')"
                                       origin="saxon:parse(instance($request-instance-name))"/>
            </xforms:action>

        </xforms:model>
       </xhtml:head>
       <xhtml:body>
              <fr:view>
                     <xforms:label ref="instance('fr-form-metadata')/title"/>
                     <fr:body>
                            <fr:section id="section-1-section" bind="section-1-bind">
                                   <xforms:label ref="$form-resources/section-1/label"/>
                                   <xforms:help ref="$form-resources/section-1/help"/>
                                   <fr:grid columns="1">
                                          <xhtml:tr>
                                                 <xhtml:td>

                                    <fr:autocomplete

                                        id="codeSearch" 
                                        bind="codeSearch-bind"
                                        dynamic-itemset="true"
                                        max-results-displayed="50">

                                        <xforms:label ref="$form-resources/codeSearch/label"/>

                                        <!-- React to user searching -->
                                        <xforms:action ev:event="fr-search-changed">
                                            <xxforms:variable name="search-value" select="event('fr-search-value')"/>
                                            <xxforms:variable name="make-suggestion" select="string-length($search-value) &gt;= 2"/>

                                            <xforms:action if="$make-suggestion">
                                                <xforms:setvalue ref="instance('code-search-instance')/searchFor" value="$search-value"/>
                                                <xforms:send submission="searchCitiesByName-submission"/>
                                            </xforms:action>

                                            <xforms:action if="not($make-suggestion)">
                                                <!-- Delete itemset -->
                                                <xforms:delete nodeset="instance('searchCitiesByName-instance')//*:GetCitiesByCountryResult/*:string"/>
                                            </xforms:action>
                                        </xforms:action>

                                        <xforms:itemset nodeset="instance('searchCitiesByName-instance')//*:GetCitiesByCountryResult/*:string">
                                            <xforms:label ref="text()"/>
                                            <xforms:value ref="text()"/>
                                        </xforms:itemset>
                                    </fr:autocomplete>

                                                 </xhtml:td>
                                          </xhtml:tr>
                                          <xhtml:tr>
                                                 <xhtml:td>
                                                        <widget:xforms-instance-inspector xmlns:widget="http://orbeon.org/oxf/xml/widget" id="orbeon-xforms-inspector"/>
                                                 </xhtml:td>
                                          </xhtml:tr>
                                   </fr:grid>
                            </fr:section>
                     </fr:body>
              </fr:view>
       </xhtml:body>
</xhtml:html>

感谢任何帮助。

0 个答案:

没有答案