Orbeon - 在xpl的动态数据中显示10个以上的项目

时间:2017-05-16 16:55:39

标签: xml dynamic orbeon

我将文件countries.xpl修改为重定向并从xml加载我公司的数据。

我需要在dinamyc数据下拉菜单中显示很多项目。

我修改了这行中的countries.xpl:

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

如果我将值“10”更新为数字小于10,例如“8”,这可行,我只看到dinamyc数据中的8个项目下拉。

但是如果我将这个值“10”修改为10个例子“11”以上的数字,我只能看到dinamyc数据中的10个项目,而不是11个或更多。

我的问题是这样的: ¿有可能在动态数据下拉列表中显示超过10个项目?

¿它正确修改了行<xsl:copy-of select="/countries...的编号?或者我需要修改xpl中的其他行?

我将xpl中的代码附加到了:

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

请帮助我。 非常感谢 此致

1 个答案:

答案 0 :(得分:0)

您可以在max-results-displayed上添加<fr:autocomplete>属性。有关max-results-displayed的示例和更多信息,请参阅自动填充文档的Maximum number of displayed results部分。