Xquery xf:重复节点集性能差
我用xf:repeat nodeset元素填写表格:Xquery xf:重复节点集性能差,xquery,xforms,Xquery,Xforms,我用xf:repeat nodeset元素填写表格: <tbody xf:repeat-nodeset="instance('table')//result"> <tr> <td> <xf:output value="interfaceName"></xf:output>
<tbody xf:repeat-nodeset="instance('table')//result">
<tr>
<td>
<xf:output value="interfaceName"></xf:output>
</td>
<td>
<xf:output value="reportDate"></xf:output>
</td>
<td>
<xf:group ref=".[testResult='success']">
<xf:output value="testResult" style="color:green;font-weight:bold"/>
</xf:group>
<xf:group ref=".[testResult='failure']">
<xf:output value="testResult" style="color:red;font-weight:bold"/>
</xf:group>
</td>
<td>
<xf:trigger appearance="minimal">
<xf:label>File link</xf:label>
<xf:action ev:event="DOMActivate">
<xf:load show="new">
<xf:resource value="fileLink"/>
</xf:load>
</xf:action>
</xf:trigger>
</td>
</tr>
</tbody>
文件链接
迭代600个结果并填充4列需要28秒。在我看来,这是非常重要的。有人能建议我如何改进这一点吗?在XPath表达式中使用//对于某些XForms引擎来说可能是个问题,至少对于XSLTForms来说是这样,因为XForms没有指定如何定义索引来改进这一点。没有索引,所有节点都会逐个测试
如果可能的话,您应该尝试使用完整路径。在XPath表达式中使用//对于某些XForms引擎来说可能是个问题,至少对于XSLTForms来说是这样,因为XForms没有指定如何定义索引来改进这一点。没有索引,所有节点都会逐个测试
如果可能,您应该尝试使用完整路径。对于这种结果的只读显示,我发现一些处理器支持的
transform()
函数非常方便。编写一个样式表,接受“result”实例作为输入,并生成一个HTML表;我将其称为“results to table.xsl”。然后写
<xf:output value="transform(instance('results'),
'results-to-table.xsl',
false)"
mediatype="application/xhtml+xml"/>
在文档中的适当位置
因为
transform()
在XForms1.1中不是标准的,所以这只适用于接受它作为语言扩展的处理器;XSLTForms会,但我不知道其他处理器会做什么。对于这种结果的只读显示,我发现一些处理器支持的transform()
函数非常方便。编写一个样式表,接受“result”实例作为输入,并生成一个HTML表;我将其称为“results to table.xsl”。然后写
<xf:output value="transform(instance('results'),
'results-to-table.xsl',
false)"
mediatype="application/xhtml+xml"/>
在文档中的适当位置
因为
transform()
在XForms1.1中不是标准的,所以这只适用于接受它作为语言扩展的处理器;XSLTForms会,但我不知道其他处理器会做什么。当我使用完整路径时,我什么也得不到:tbody xf:repeat nodeset=“instance('table')/results/result”我想知道表实例中的根元素是否命名为“results”。如果是这样,请记住函数调用“instance('table')”不会返回该实例的文档节点,而是返回最外层的元素。您可能需要编写nodeset=“instance('table')/self::results/result”
。当我使用完整路径时,我什么也得不到:tbody xf:repeat nodeset=“instance('table')/results/result”我想知道表实例中的根元素是否命名为“results”。如果是这样,请记住函数调用“instance('table')”不会返回该实例的文档节点,而是返回最外层的元素。您可能需要编写nodeset=“instance('table')/self::results/result”
。我最终对表使用分页并以这种方式限制迭代次数:我最终对表使用分页并以这种方式限制迭代次数: