Проверка 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 87

5 ответов:

Джим

вам нужно связать XML-документ в Visual Studio с файлом XSD, который у вас есть - вы должны увидеть что-то вроде этого в окне свойств XML-документа:

alt text

Mirror 1

в Редакторе набора схем XML (открывается при нажатии на кнопку (...) многоточие в текстовом поле "схемы" в окне свойств) вам нужно убедиться, что у вас есть схема. Кроме того, убедитесь, что Use столбец для этой схемы включен - если нет, нажмите на него - вы получите выпадающий список опций, выберите Use один с зеленой галочкой:

alt text

Mirror 1

убедитесь, что окно списка ошибок Visual Studio отображается (меню Вид > список ошибок). Это покажет все несоответствия между определениями схем XML и XSD.

Как только все это будет на месте, редактор XML Visual Studio должен выделить проблемы с вашим XML в редакторе с помощью синего цвета закорючки:

alt text

Mirror 1

вам не нужно вручную связывать файлы в 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

У меня была такая же проблема, но VS уже правильно ссылался на мою схему. Оказывается, файл, который я пытался проверить, не имел расширения файла "xml". Добавлен.xml до конца моего имени файла, и проверка начала работать.