Проверка XML с XSD в Visual Studio IDE IDE
-
01-10-2019 - |
Вопрос
Я знаю, что сделал это раньше, но сегодня не работает, и я не могу найти где-нибудь, что объясняет, как это сделать. Это может быть моим недостатком сна, но я подозреваю, что Гремилины.
У меня есть документ XML и каталог, полный XSD, который его определяет. Как мне установить Visual IDE вверх, чтобы уведомить меня оказаться от проверки валидации, а затем предоставлять список действительных тегов и атрибутов IntelliSense в данном контексте?
Что я пробовал:
- Я добавил XSD в проект с документом XML.
- Я добавил XSD в список схемы XML (в разделе XML / Schemas ... Пункт меню.)
- Я даже включал атрибуты Schemalocation и Nonamespaceschemalocation для документа XML.
Visual Studio все еще не отказывается от полезной информации о отладке или редактировании. Я попробовал и 2010 и 2008 год (я сделал это раньше в 2008 году, я подумал)
Обновлять: У меня был другой разработчик, попробую это, и он тоже не удалось. Он знает, что он сделал это с другими документами XML и у него работало. Затем я скачал редактор Oxygen XML, и он отлично работал на одних и тех же файлах XML и XSD, поэтому файлы, кажется, хорошо (или кислород, более прощающий / гибкий.,),.)
Решение
Вам нужно будет связать документ XML в Visual Studio с помощью файла XSD.
Вы должны увидеть что-то вроде этого в окне свойств документа XML:
В редакторе SCHEMA XML Schema (открывается при нажатии на элемент (...) ellipsis в текстовом поле «Schemas» в окне «Свойства») Вам необходимо убедиться, что у вас есть присутствующая схема. Кроме того, убедитесь, что
Use
Столбец для этой схемы включен - если нет, нажмите на него - вы получите раскрывающийся список параметров, выберитеUse
один с зеленой галочкой:Убедитесь, что список ошибок Visual Studio's Visuster отображается (просмотр меню> Список ошибок). Это покажет все несоответствия между определениями XML и XSD-схемы.
Как только все это на месте, редактор Visual Studio XML должен выделить проблемы с вашим XML в редакторе, используя Blue Squigglies:
Другие советы
Вам не нужно вручную ассоциировать файлы в 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
В вашей схеме любые ссылки на типы, определенные в схеме, должны быть префиксированы с пространством имен (именно поэтому мы добавили xmlns:this
атрибут в вышеупомянутом <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 на диске, свойствах> General И если он заблокирован, у вас будет кнопка «Разблокировать». Это вызывало мою проверку XML по переводу в VS2012.
Содержит ли ваш XSD атрибут "targetNamespace"
/schema/@targetNamespace
Это похоже на пространство имен, которое вы ссылаетесь в XML?
Примеры:
Xsd.:
<xs:schema .... targetNamespace="Datafile.xsd" ... >
XML:
<data xmlns="Datafile.xsd" >...</data>
Смотрите также: XML / XSD IntelliSense не работает в Visual Studio 2010
У меня была эта же проблема, но это правильно ссылается на мою схему. Оказывается, файл, который я пытался проверить, не имел расширение файла XML. Добавлено .xml до конца моего файла и проверка начала работать.