我有一个 XML 文档,它会随着时间的推移而膨胀,我想确保我对 XSL 的 XPath 选择select
将尽可能高效。
该文档包含以下类型的元素:
<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>
从长远来看,这两个选择器中的哪一个(查找与上面类似的元素)会更有效?
/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 功能。