Следует различать три аспекта терминологии, имеют решающее значение:
- недетерминизм, что означает, что то же функция/выражение может возвращать разные результаты при оценке несколько раз с тем же параметрами/контекстом (с той же реализацией, в том же запросе).
- Поведение, зависящее от реализации, что означает, что реализации могут вести себя по-разному для конкретной функции (но это не означает, что она не может быть детерминированной в рамках одной и той же реализации).
- Реализация, определенная поведением, что аналогично поведению, зависящему от реализации, за исключением того, что реализация должна документировать свое поведение точно так, чтобы пользователи могли положиться на него.
Мое понимание из спецификации XQuery, но и из спецификации XML-схемы, которая определяет язык регулярных выражений, является то, что две реализации должны возвращать одинаковые результаты вызова fn:analyze-string
, соображения относительно вмещающего элемент узлов левой стороны ,
В спецификации XQuery говорит, что недетерминизм из fn:analyze-string
только из-за, как было упомянуто в вопросе, к тому, что личность узел может или не может быть одинаковой по повторяющимся и идентичных вызовов.
Базовый URI и префиксы зависят от реализации, и я понимаю, что по-прежнему подразумевается, что они должны быть выбраны детерминистически в запросе.
Если я ничего не заметил, спецификация XML Schema, похоже, не дает возможности разработчикам регулярных выражений. XQuery расширяет регулярные выражения XML Schema, но единственная функция , зависящая от реализации, - это захват некоторых групп, что имеет значение только для замены.
Я изменил терминологию в названии таким образом, что, как я считаю, соответствует вашему намерению лучше (см. Объяснения в моем ответе). –