| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > Уникальность в рамках группы 2 |
| Автор: Compositum 20.4.2012, 17:46 | ||
Имеется такой код:
Я ожидаю, что значения элементов core и year будут уникальны в рамках одного элемента acadItems. Но этого не происходит. Где ошибка? |
| Автор: Compositum 20.4.2012, 18:02 | ||
Я попробовал и такой вариант:
тоже не пашет. |
| Автор: diadiavova 20.4.2012, 18:56 |
| Да вообще-то первый вариант должен работать |
| Автор: Compositum 20.4.2012, 19:02 | ||
можешь пояснить по поводу использования xs:selector и xs:field? Насколько я понял - xs:selector выбирает элемент, в котором нужно выбирать уникальные элементы. А элемент(ы) xs:field указывают дочерние элементы или атрибуты, значения которых должны быть уникальны. Если указано несколько xs:field, то уникальной должна быть указанная комбинация. Я верно понял? Если да, то тогда верным скорее должен был бы быть второй вариант кода... |
| Автор: diadiavova 20.4.2012, 19:37 | ||||
| Compositum, посмотрел твой пример более внимательно, поначалу не совсем понял проблему. Селектор определяет набор элементов внутри которых значение должно быть уникальным, а поле - сами уникальные поля. Для твоего случая действительно надо использовать второй вариант. Но опять-таки, если ты не используешь префиксы пространств имен в xpath-выражениях, то это как раз и может быть проблемой. Добавлено через 3 минуты и 2 секунды Вот посмотри, я в твой старый пример вставил ту часть схемы, что ты выложил, внес изменения и вроде работает как надо
|
| Автор: Compositum 20.4.2012, 20:11 | ||||||
Вот полный вариант моего XML файла (комментами пометил идентичные записи):
Полный вариант схемы для файла таков:
Однако Visual Studio не кашляет на предмет нарушения схемы... 2 diadiavova Твой вариант работает, но я не понял, почему не работает мой... :( Как XML файл находит соответствующий ему XSD? Ведь в каталоге может быть несколько XSD... Просто у меня по факту XSD файл хранится совсем в др. каталоге. Это я для примера показываю код так, как будто в том же. Оригинальная шапка в моём XML файле такая:
|
| Автор: diadiavova 20.4.2012, 22:19 |
| Вот почитай как студия находит схемы http://msdn.microsoft.com/ru-ru/library/ms255821%28VS.90%29.aspx Плюс схемы проекта учитываются |
| Автор: Compositum 20.4.2012, 22:21 | ||||
Но ведь я использую пространство имён по умолчанию, и IDE корректно подсказывает, какие элементы я должен создавать. почему в xpath не работает?
я не так выразился. этот вопрос снят |
| Автор: diadiavova 20.4.2012, 22:40 |
Этого я не знаю. Видимо он использует пространство имен контекста, то есть в каком элементе ты пишешь выражение, такое пространство и и спользуется, а поскольку это пространство схемы, то и надо указывать другое. В гибридных хмл-документах вообще с элементами без префиксов надо быть осторожным по этой причине. В конце концов тебя ведь не удивляет, что для атрибутов ты не указываешь пространство имен, но оно понимается правильно, то есть таким же как и для элемента, в котором определен атрибут. |
| Автор: Compositum 21.4.2012, 16:29 | ||
Я прописал во всём XML документе нэймспейсы, но всё равно unique не работает... В первых двух записях оба вложенных значения совпадает. IDE не кашляет на эту тему.
|
| Автор: diadiavova 21.4.2012, 16:36 |
| Compositum, ну так ты выложи свою схему, чтобы можно было запустить и посмотреть. Или как? |