Вопрос

Я знаю, что сделал это раньше, но сегодня не работает, и я не могу найти где-нибудь, что объясняет, как это сделать. Это может быть моим недостатком сна, но я подозреваю, что Гремилины.

У меня есть документ 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.

  1. Вы должны увидеть что-то вроде этого в окне свойств документа XML:

    XML Properties  loading= Schema">

  2. В редакторе SCHEMA XML Schema (открывается при нажатии на элемент (...) ellipsis в текстовом поле «Schemas» в окне «Свойства») Вам необходимо убедиться, что у вас есть присутствующая схема. Кроме того, убедитесь, что Use Столбец для этой схемы включен - если нет, нажмите на него - вы получите раскрывающийся список параметров, выберите Use один с зеленой галочкой:

    XML Schema Selector

  3. Убедитесь, что список ошибок Visual Studio's Visuster отображается (просмотр меню> Список ошибок). Это покажет все несоответствия между определениями XML и XSD-схемы.

  4. Как только все это на месте, редактор Visual Studio XML должен выделить проблемы с вашим XML в редакторе, используя Blue Squigglies:

    Example of Error

Другие советы

Вам не нужно вручную ассоциировать файлы в 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 до конца моего файла и проверка начала работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top