我收到错误:
在...中的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中这样做吗?)
答案 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()
访问请求参数,并将其值复制到某处必要时的实例。