Я предполагаю, что вы используете привязку XSLT 2.0.
Если это так, End/@value = following-sibling::test/Origin/@value
сравнивает атрибут value
дочернего элемента End
с атрибутом value
дочернего элемента Origin
для каждого следующего элемента test
. , Это оценивается как истина, если любой из значений Origin/@value
совпадает. Это, вероятно, не то, что вы хотите.
Оба элемента End
и Origin
являются потомками элемента test
, который является контекстом для ваших выражений XPath. Если вы хотите проверить два дочерних элемента:
<sch:rule context="test">
<sch:assert test="End/@value = Origin/@value"
>Both the value are not Equal. </sch:assert>
</sch:rule>
Если вы хотите проверить End/@value
из текущего элемента test
с Origin/@value
из следующего элемента test
, но не завершиться ошибкой, если нет следующего элемента test
:
<sch:rule context="test[exists(following-sibling::test[1])]">
<sch:assert test="End/@value = following-sibling::test[1]/Origin/@value"
>Both the value are not Equal. </sch:assert>
</sch:rule>
[1]
ограничивает XPath выбором только первого test
.