0

我得到错误:

XPath 语法错误 ... in {...get-request-parameter('query..}:
Cannot find a matching 1-argument function named { 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 中进行吗?)

4

2 回答 2

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>
于 2011-02-09T11:44:46.340 回答
0

xxforms:get-request-parameter()设计为从 XForms 调用,但您在这里是从 XSLT 调用它。

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

于 2011-01-03T01:03:03.687 回答