Search code examples
xmldynamicorbeon

Orbeon - Show more than 10 items in dynamic data from xpl


I modified the file countries.xpl to redirect and load data from my company from xml.

I need show much items in a dynamic data dropdown.

I modified the countries.xpl in this line:

 <xsl:copy-of select="/countries/country[starts-with(lower-case(name),lower-case($name))][10 >= position()]"/>

If I update the value "10" to number less 10, example "8", this works and I see only 8 items in the dynamic data drop down.

But if I modify this value "10" to a number higher from 10 example "11", I see only 10 item in the dynamic data, not 11 or more.

My questions is this: is it possible show more than 10 item in the dynamic data dropdown?

Is it correctly modified the number of the line <xsl:copy-of select="/countries...? or do I need modified other line in the xpl?

I attached the code from xpl to continued:

<!--
    Copyright (C) 2004 Orbeon, Inc.
    This program is free software; you can redistribute it and/or modify it under the terms of the
    GNU Lesser General Public License as published by the Free Software Foundation; either version
    2.1 of the License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
    without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    See the GNU Lesser General Public License for more details.
    The full text of the license is available at http://www.gnu.org/copyleft/lesser.html
-->
<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:oxf="http://www.orbeon.com/oxf/processors"
    xmlns:xh="http://www.w3.org/1999/xhtml"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <p:param name="instance" type="input"/>
    <p:param name="data" type="output"/>

    <p:processor name="oxf:request">
        <p:input name="config">
            <config>
                <include>/request/parameters/parameter[name = 'country-name']</include>
                <include>/request/parameters/parameter[name = 'all']</include>
            </config>
        </p:input>
        <p:output name="data" id="request"/>
    </p:processor>

    <p:processor name="oxf:xslt">
        <p:input name="data" href="countries.xml"/>
        <p:input name="request" href="#request"/>
        <p:input name="instance" href="#instance"/>
        <p:input name="config">
            <countries xsl:version="2.0">
                <xsl:variable
                    name="name"
                    select="if (doc('input:instance')/*/@xsi:nil = 'true')                                      (: No instance was posted to this service :)
                            then doc('input:request')/request/parameters/parameter[name = 'country-name']/value (: Try getting request parameter :)
                            else doc('input:instance')/instance/country-name                                    (: Use name in posted instance :)"/>
                <xsl:variable
                    name="all"
                    select="doc('input:request')/request/parameters/parameter[name = 'all']/value = 'true'"/>
                <xsl:choose>
                    <!-- If no name is specified, just take the first 10 countries unless all=true -->
                    <xsl:when test="empty($name)">
                        <xsl:copy-of select="/countries/country[$all or position() le 10]"/>
                    </xsl:when>
                    <!-- Get first 10 countries that start with provided name -->
                    <xsl:otherwise>
                        <xsl:copy-of select="/countries/country[starts-with(lower-case(name), lower-case($name))][11 >= position()]"/>
                    </xsl:otherwise>
                </xsl:choose>
            </countries>
        </p:input>
        <p:output name="data" ref="data"/>
    </p:processor>

</p:config>

Help my please. Many thanks Regards


Solution

  • You can, by adding the max-results-displayed attribute on the <fr:autocomplete>. For an example and more information about max-results-displayed see the section Maximum number of displayed results of the Autocomplete documentation.