Private-Bookers
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Проверка

Если нужно проверить документ XML, используйте класс

XmlValidatingReader
. Он обладает всей функциональностью класса
XmlTextReader
(оба реализуют
XmlReader
, но
XmlValidatingReader
добавляет свойство
ValidationType
, свойство
Schemes
и свойство
SchemaType
). Свойство
ValidationType
задается как тип проверки, которую желательно выполнить. Допустимые значения этого свойства следующие:

Значение свойства Описание
Auto
Если в
<!DOCTYPE...>
объявлен DTD, он и будет загружаться и обрабатываться. Атрибуты по умолчанию и общие сущности, определенные в DTD, станут доступными. Если найден атрибут XSD
schemalocation
, то загружается и обрабатывается XSD, при этом все атрибуты по умолчанию, определенные в схеме, будут возвращены. Если найдено пространство имен с префиксом MSXML
x-schema:
, загрузится и обработается схема XDR, все атрибуты, определенные по умолчанию, возвратятся.
DTD
Проверка согласно правилам DTD.
Schema
Проверка согласно правилам XSD.
XDR
Проверка согласно правилам XDR.
None
Проверка не выполняется.

Если свойство задано, то должен быть назначен обработчик событий

ValidationEventHandler
. Событие инициируется, когда случается ошибка проверки. На ошибку можно отреагировать любым подходящим образом. Рассмотрим пример. Добавим пространство имен схемы XDR (XML Data Reduced — приведенные данные XML) к файлу
books.xml
и назовем этот файл
booksVal.xml
. Теперь он выглядит так:

<?xml version='1.0'?>

<!-- Этот файл представляет фрагмент базы данных учета запасов книжного склада -->

<bookstore xmlns="x-schema:books.xdr">

 <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

<title>The Autobiography of Benjamin Franklin</title>

<author>

<first-name>Benjamin</first-name>

<last-name>Franklin</last-name>

</author>

<price>8.99</price>

 </book>

 <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">

<title>The Confidence Man</title>

<author>

<first-name>Herman</first-name>

<last-name>Melville</last-name>

</author>

<price>11.99</price>

 </book>

 <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">

<title>The Gorgias</title>

<author>

<name>Plato</name>

</author>

<price>9.99</price>

 </book>

</bookstore>

Отметим, что элемент

bookstore
имеет теперь атрибут
xmlns="x-schema:books.xdr"
. Это будет указывать на следующую схему XDR:

<?xml version="1.0"?>

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">

 <ElementType name="first-name" content="textOnly"/>

 <ElementType name="last-name" content="textOnly"/>

 <ElementType name="name" content="textOnly"/>

 <ElementType name="price" content="textOnly" dt:type="fixed.14.4"/>

 <ElementType name="author" content="eltOnly" order="one">

<group order="seq">

<element type="name"/>

</group>

<group order="seq">

<element type="first-name"/>

<element type="last-name"/>

</group>

 </ElementType>

 <ElementType name="title" content="textOnlу" />

 <AttributeType name="genre" dt:type="string"/>

  • Читать дальше
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка