2013-06-25 43 views
0

我有隨着時間的推移,我想確保我的一個XSL select XPath的選擇將是儘可能高效將在大小氣球中的一個XML文檔。在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> 

這兩個選擇(其中找到像上面的一個元素)的效率會更高,從長遠來看的?

/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功能。

回答

0

兩個XPath表達式具有不同的效果,所以,要求這是更快似乎無關(第一選擇值元件,所述第二一個simple_instance元件)。

此外,XPath是一個不規範的實現。實現在評估複雜路徑的策略上差別很大。一個實現的答案對另一個實現可能並非如此。衡量它並看看(並告訴我們答案)。