2016-06-28 8 views
0

私はXFと表に記入:ノードセット要素リピート:600の結果以上XF:ノードセット貧弱なパフォーマンスを繰り返し

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

反復処理を4列に充填して28秒かかります。私の心には、それは多くへの道です。誰も私がこれを改善する方法を提案することはできますか?

+0

テーブルのページ番号を使用し、このように反復回数を制限しました。 – user6419217

答えて

3

XFormsの中で//を使用すると、XFormsエンジンでは少なくともXSLTFormsで問題が発生する可能性があります。これは、XFormsではこれを改善するためのインデックスの定義方法が指定されていないためです。インデックスなしでは、すべてのノードが1つずつテストされます。

可能であれば、完全なパスで試してください。

+0

フルパスを使用すると、何も得られません。 tbody xf:repeat-nodeset = "インスタンス)/ results/result " – user6419217

+0

テーブルインスタンスのルート要素の名前が「results」であるのだろうかと思います。その場合、関数呼び出し "instance( 'table')は、そのインスタンスのドキュメントノードではなく、最も外側の要素を返します。 'nodeset =" instance( 'table')/ self :: results/result "と書くことができます。 –

1

このような結果の読み取り専用表示では、一部のプロセッサでサポートされているtransform()機能が非常に便利です。 'result'インスタンスを入力として受け入れ、HTMLテーブルを生成するスタイルシートを作成します。私はそれを 'results-to-table.xsl'と呼んでいます。次に、ドキュメントの適切な場所に

<xf:output value="transform(instance('results'), 
          'results-to-table.xsl', 
          false)" 
      mediatype="application/xhtml+xml"/> 

と書いてください。

transform()はXForms 1.1では標準ではないため、これは言語の拡張機能として認識されるプロセッサでのみ機能します。 XSLTFormsはそうですが、他のプロセッサが何をしているのか分かりません。

関連する問題