Проверка XML с помощью XSD в среде Visual Studio IDE
Я знаю, что я делал это раньше, но это не работает сегодня, и я не могу найти нигде, что объясняет, как это сделать. Это может быть мой недостаток сна, но я подозреваю гремлинов.
У меня есть XML-документ и каталог, полный XSD, которые определяют его. Как настроить визуальную среду IDE для уведомления меня о сбоях проверки, а затем предоставить intellisense список допустимых тегов и атрибутов в данном контексте?
Что я пробовал:
- я добавил XSD - это проект с XML-документом.
- Я добавил XSD в список схем XML (в разделе XML / Schemas... пункт меню.)
- Я даже включил атрибуты schemaLocation и noNamespaceSchemaLocation в XML-документ.
Visual Studio по-прежнему не отказывается от какой-либо полезной информации об отладке или редактировании. Я пробовал и 2010 и 2008 (я делал это раньше в 2008 году я думал)
обновление: у меня был другой разработчик попробовать это, и это не удалось для него тоже. Он знает, что он сделал это с другими XML-документов и работает. Затем я загрузил редактор Oxygen XML, и он отлично работал с теми же файлами XML и XSD, поэтому файлы кажутся прекрасными (или Oxygen более прощающий / гибкий . . . )
5 ответов:
Джим
вам нужно связать XML-документ в Visual Studio с файлом XSD, который у вас есть - вы должны увидеть что-то вроде этого в окне свойств XML-документа:
в Редакторе набора схем XML (открывается при нажатии на кнопку (...) многоточие в текстовом поле "схемы" в окне свойств) вам нужно убедиться, что у вас есть схема. Кроме того, убедитесь, что
Use
столбец для этой схемы включен - если нет, нажмите на него - вы получите выпадающий список опций, выберитеUse
один с зеленой галочкой:убедитесь, что окно списка ошибок Visual Studio отображается (меню Вид > список ошибок). Это покажет все несоответствия между определениями схем XML и XSD.
Как только все это будет на месте, редактор XML Visual Studio должен выделить проблемы с вашим XML в редакторе с помощью синего цвета закорючки:
вам не нужно вручную связывать файлы в Visual Studio-это будет автоматически сопоставьте XML-файл с xsd-файлом, если они оба открыты, и у вас правильно определено пространство имен.
чтобы определить пространство имен:
в корневом элементе XML-файла:
<Data xmlns='http://yourdomain.com/yourschema.xsd'> ... </Data>
в элементе схемы XSD файла:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://yourdomain.com/yourschema.xsd" xmlns:this="http://yourdomain.com/yourschema.xsd" elementFormDefault="qualified"> ... </xs:schema>
примечание по использованию типов в схеме, когда у вас есть параметр targetnamespace
потому что вы указываете
targetNamespace
в вашей схеме любые ссылки на типы, определенные в схеме, должны иметь префикс с пространством имен (именно поэтому мы добавили выше<xs:schema />
элемент).<!-- Define the type as normal --> <xs:complexType name="Row"> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="Value" type="xs:float" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:complexType> <!-- Use the type (note the "this:" prefix) --> <xs:element name="Row" type="this:Row" minOccurs="0" maxOccurs="unbounded" />
еще одна точка отказа здесь Windows 7 "блокирует" файлы схемы... щелкните правой кнопкой мыши на xsd-файле на диске, свойства > общие, и если он заблокирован, у вас будет кнопка "разблокировать". Это привело к сбою проверки XML в VS2012.
содержит ли ваш xsd атрибут "targetNamespace" /schema / @targetNamespace, аналогичный пространству имен, на которое вы ссылаетесь в xml?
пример:
xsd:
xml:
см. также XML / XSD intellisense не работает в Visual Studio 2010