Я должен признать, что я не уверен, работает ли это лучше или хуже, чем нормальный повторитель ASP.NET onItemDatabound код броска, но так или иначе вот мои 5 центов.
MyObject obj = e.Item.DataItem as MyObject;
if(obj != null)
{
//Do work
}
В экземпляре документа нет специального синтаксиса. Просто требуется, чтобы узел keyref соответствовал существующему узлу ключа. Валидация покажет вам, удовлетворено ли ключевое ограничение.
RE твой код:
Я только начал сам баловаться с ключами, но я думаю, что заметил твою ошибку - aKey
должен выглядеть так:
<xs:key name="aKey">
<xs:selector xpath="owner" />
<xs:field xpath="@id" />
</xs:key>
Более того - это надо понимать - ограничения ключа не распознают пространство имен по умолчанию. Вы всегда должны ставить перед каждой частью selector
xpath префикс пространства имен для искомого элемента. Если у вас нет префикса пространства имен - жесткий, вам нужно добавить его. Это ограничение стандарта.
Я нашел этот поток, ищущий то же самое, что искал OP - простой пример использования элемента <xs:key>
. Все вещи JAXB были греческими для меня и отвлекающими. Для других, кто найдет эту ветку позже, вот простой пример, опубликованный на MSDN через пару лет после того, как OP задал вопрос здесь на SO:
В случае изменения связи MSDN путь крошки был:
https://msdn.microsoft.com/library , затем нажмите «Переключиться на представление оглавления библиотеки» и просмотрите:
Библиотека MSDN> .NET development> .NET Framework 4.6 и 4.5 > Руководство по разработке> Данные и моделирование> Справочник по стандартам XML> Справочник по схемам XML (XSD)> Элементы схемы XML> < xsd: key> Элемент
Пожалуйста, попробуйте посмотреть этот учебник по ключам / ключевым ссылкам .
Цветной текст очень полезен.