Если вы хотите, чтобы каждый X в Y имел уникальное значение для Z, то:
(a) объявление Y должно содержать ограничение xs:unique
(b) селектор должен быть выражением пути, которое выбирает X, начиная с Y
(c), поле должно быть выражением пути, которое выбирает Z, начиная с X.
Итак, фундаментальная ошибка, которую вы ' Мы сделали, чтобы определить ограничение на неправильном уровне. xs:unique
не принадлежит тому, что вы хотите быть уникальным, оно принадлежит содержащему его элементу, внутри которого он должен быть уникальным.
Это потому, что действительность элемента зависит только от его содержимого, и не в его контексте. Если два X имеют одинаковое значение для Z, недопустимо содержащее Y.