XSLTForms排序实例

时间:2016-07-20 13:44:57

标签: sorting exist-db xsltforms

我在exists-db服务器上使用XSLTforms,我正在尝试对实例进行排序。以下是该模型的示例:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xf="http://www.w3.org/2002/xforms">
<head>
    <xf:model>
        <xf:instance xmlns="" id="default">
            <data>
                <x>
                    <a>B</a>
                    <a>C</a>
                    <a>A</a>
                </x>
            </data>
        </xf:instance>
    </xf:model>
</head>

是否有可能以某种方式对xf:repeat中的元素进行排序以获得这样的结果:

  • A
  • B
  • C

我尝试过使用这些示例,但遗憾的是,当我在项目中复制它们时,它们无效:

https://github.com/AlainCouthures/xsltforms/blob/master/testsuite/xforms-examples/03-output/sorting/sort.xhtml

https://github.com/AlainCouthures/xsltforms/blob/master/testsuite/xforms-examples/13-javascript/xslt-sort.xhtml

我是xforms的新手,我无法弄清楚为什么这些例子不起作用,所以如果有人能给我一个有用的例子或者指出我在xsltforms中对数据进行排序的正确方法,我将非常感激

提前谢谢!

1 个答案:

答案 0 :(得分:2)

不幸的是,没有任何关于在XForms规范中对数据进行排序的信息,这些使用XSLT作为变通方法的示例实际上并不完全支持JSON API级别的XSLTForms。

要使用XSLTForms运行它,您应该替换:

instanceElement.parentNode.rebuild();
instanceElement.parentNode.recalculate();
instanceElement.parentNode.revalidate();
instanceElement.parentNode.refresh();

由:

XsltForms_globals.addChange(instanceElement.parentNode.id);
XsltForms_xmlevents.dispatch(instanceElement.parentNode, "xforms-rebuild");
XsltForms_globals.refresh();