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

发布于 2024-10-09 13:09:42 字数 1349 浏览 2 评论 0原文

我收到错误:

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

注意:当我尝试使用以下命令执行管道时,

<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 中执行此操作吗?)

I get the error:

XPath syntax error at ... in {...get-request-parameter('query..}:
Cannot find a matching 1-argument function named {http://orbeon.org/oxf/xml/xforms}get-request-parameter(). Note: external function calls have been disabled

when I attempt to execute a pipeline with:

<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>

Is XPL not the correct location to retrieve the HTTP request params (should I be doing it in page-flow.xml instead?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

几度春秋 2024-10-16 13:09:42

通过使用 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>

Solved it by using the oxf:request processor in the XPL to retrieve query parameters and provide them on a separate output which is then accessed using oxf:xslt processor, like so:

<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>
忆梦 2024-10-16 13:09:42

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

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

xxforms:get-request-parameter() is designed to called from XForms, but you are here calling it from XSLT.

Do you really need to use XPL/XSLT in this case? In most cases, if what you are generating is a web page, you might just be able to use XForms. In your page flow, you point to your XForms with the view attribute, and in your XForms, on xforms-model-construct-done, you can access the request parameters with xxforms:get-request-parameter(), and copy their value somewhere in an instance if necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文