У меня есть XML-документ, размер которого будет увеличиваться с течением времени, и я хотел бы убедиться, что мой выбор XPath для XSL select
будет настолько эффективным, насколько это возможно.Является ли использование логических сравнений быстрее, чем оси в 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
, последний будет быстрее.
Примечание: Я использую возможности XML/XSL для Protege.