Не удается выполнить xxforms:get-request-parameter в XPL — процессор XSLT

Я получаю сообщение об ошибке:

Синтаксическая ошибка XPath в... в {...get-request-parameter('query..}:
Не удается найти совпадающую функцию с 1 аргументом с именем {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?)


person user557060    schedule 31.12.2010    source источник
comment
Где вам нужны эти параметры?   -  person ebruchez    schedule 01.01.2011


Ответы (2)


Решил это с помощью процессора oxf:request в XPL для получения параметров запроса и предоставления их на отдельном выходе, доступ к которому затем осуществляется с помощью процессора 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>
person user557060    schedule 09.02.2011

xxforms:get-request-parameter() предназначен для вызова из XForms, но здесь вы вызываете его из XSLT.

Вам действительно нужно использовать XPL/XSLT в этом случае? В большинстве случаев, если вы создаете веб-страницу, вы можете просто использовать XForms. В своем потоке страниц вы указываете на свои XForms с помощью атрибута view, а в своих XForms на xforms-model-construct-done вы можете получить доступ к параметрам запроса с помощью xxforms:get-request-parameter() и при необходимости скопировать их значение где-нибудь в экземпляре.

person avernet    schedule 03.01.2011