Невозможно выполнить xxforms: get-request-параметр в XPL - XSLT-процессор - PullRequest
0 голосов
/ 31 декабря 2010

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

Синтаксическая ошибка 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?)

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Решено с помощью процессора запросов oxf: в 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>
0 голосов
/ 03 января 2011

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

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

...