0

select時間の経過とともにサイズが膨らむ XML ドキュメントがあり、XSL の XPath の選択が可能な限り効率的であることを確認したいと考えています。

ドキュメントには、次のタイプの要素が含まれています。

<simple_instance>
  <name>Class0</name>
  <type>Business_Capability</type>
  <own_slot_value>
    <slot_reference>contained_business_capabilities</slot_reference>
    <value value_type="simple_instance">Class1</value>
    <value value_type="simple_instance">Class3</value>
    <value value_type="simple_instance">Class4</value>
    <value value_type="simple_instance">Class5</value>
  </own_slot_value>
  <own_slot_value>
    <slot_reference>business_capability_level</slot_reference>
    <value value_type="string">1</value>
  </own_slot_value>
  <own_slot_value>
    <slot_reference>name</slot_reference>
    <value value_type="string">Planning</value>
  </own_slot_value>
</simple_instance>

これら 2 つのセレクター (上記のような要素を見つける) のどちらが長期的に効率的でしょうか?

/node()/simple_instance[type='Business_Capability']/own_slot_value/slot_reference[text()='business_capability_level']/following-sibling::value[text()='1']

また

/node()/simple_instance[type='Business_Capability' and (own_slot_value/slot_reference='business_capability_level') and (own_slot_value/value='1')]

私の推測では、XML の実装が をショートサーキットするandと、後者の方が高速になると思います。

注: 私は Protege の XML/XSL 機能を使用しています。

4

1 に答える 1

0

2 つの XPath 式の結果は異なるため、どちらが速いかを尋ねても意味がありません (最初の式では値要素が選択され、2 番目では simple_instance 要素が選択されます)。

さらに、XPath は実装ではなく仕様です。複雑なパスを評価するための戦略は、実装によって大きく異なります。ある実装に当てはまる答えが、別の実装には当てはまらない場合があります。それを測定して見てください(そして答えを教えてください)。

于 2013-06-25T22:51:10.407 に答える