无法在XPL - XSLT处理器中执行xxforms:get-request-parameter

时间:2010-12-31 11:53:50

标签: orbeon xforms

我收到错误:

  

在...中的XPath语法错误{... get-request-parameter('query ..}:
  找不到名为{http://orbeon.org/oxf/xml/xforms} get-request-parameter()的匹配单参数函数。注意:外部函数调用已被禁用

当我尝试使用:

执行管道时
<p:processor name="oxf:xslt">
    <p:input name="config">
        <xsl:stylesheet version="2.0">
            <xsl:template match="/">
                <TargetURL>
                    <xsl:variable name="location" select="/Configuration/XMLDB/Location/text()"/>                           
                    <xsl:variable name="name" select="/Configuration/XMLDB/Name/text()"/>                           
                    <xsl:variable name="query" select="xxforms:get-request-parameter('query')"/>                           
                    <xsl:value-of select="fn:concat($location,'/',$name,'?',$query)"/>
                </TargetURL>
            </xsl:template>
        </xsl:stylesheet>
    </p:input>
    <p:input name="data" href="#configuration"/>
    <p:output name="data" id="Target"/>
</p:processor>

XPL不是检索HTTP请求参数的正确位置(我应该在page-flow.xml中这样做吗?)

2 个答案:

答案 0 :(得分:1)

通过使用XPL中的oxf:request处理器来检索查询参数并在单独的输出上提供它们,然后使用oxf:xslt处理器访问它们,如下所示:

<p:processor name="oxf:request">
    <p:input name="config">
        <config>
            <include>/request/parameters/parameter[name='param1']</include>
            <include>/request/parameters/parameter[name='param2']</include>
        </config>
    </p:input>
    <p:output name="data" id="request"/>
</p:processor>


<p:processor name="oxf:xslt">
    <p:input name="config">
        <xsl:stylesheet version="2.0">
            <xsl:template match="/">
                <TargetURL>
                    <xsl:variable name="var1" select="doc('input:request')/request/parameters/parameter[name='param1']/value"/>
                    <xsl:variable name="var2" select="doc('input:request')/request/parameters/parameter[name='param2']/value"/>                         
                </TargetURL>
            </xsl:template>
        </xsl:stylesheet>
    </p:input>
    <p:input name="data" href="#configuration"/>
    <p:input name="request" href="#request"/>
    <p:output name="data" id="Target"/>
</p:processor>

答案 1 :(得分:0)

xxforms:get-request-parameter()旨在从XForms调用,但是你在这里从XSLT调用它。

在这种情况下你真的需要使用XPL / XSLT吗?在大多数情况下,如果您生成的是一个网页,您可能只能使用XForms。在您的页面流中,您指向具有view属性的XForms,并在您的XForms中xforms-model-construct-done,您可以使用xxforms:get-request-parameter()访问请求参数,并将其值复制到某处必要时的实例。