Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.49 Кб
Скачать

Файли визначення схеми документа

Відповідно до сучасного стандарту, пройшов стандартизацію документ повинен відповідати пов'язаному з ним файлу XSD (XML Schema Definition) - файлу визначення схеми XML, Який визначає конкретну мову, тобто описує, які елементи і типи можуть з'являтися в документі. Схеми XSD покликані замінити DTD (Document Type Definition), різниця між ними полягає в тому, що файли XSD самі теж використовують синтаксис XML. Схеми XSD дозволяють визначити, які теги дозволені, обов'язкові вони чи ні, чи можуть повторюватися в документі і так далі. Таким чином, XML описує дані, а XSD - Структуру цих даних, або метадані. У термінах програмування, XSD - Опис типів, у той час як у XML-файлі описані об'єкти цих типів. За адресою http://www.w3.org/TR/2003/WD-xmlschema-11-req-20030121/ знаходиться робочий проект стандарту XSD 1.1.

Файл опису схеми починається з опису префікса простору імен, який включається потім у всі елементи цього файлу. Адреса http://tempuri.org призначається для завдання URI для просторів імен ASP. NET:

<xs: schema id = "XMLSchema2" targetNamespace =

"http://tempuri.org/XMLSchema2.xsd"

           elementFormDefault = "qualified"

  xmlns = "http://tempuri.org/XMLSchema2.xsd"

  xmlns: mstns = "http://tempuri.org/XMLSchema2.xsd"

  xmlns: xs = "http://www.w3.org/2001/XMLSchema">

Створюючи схеми XSD, Можна:

1. декларувати елементи і атрибути.

<xs: element name = "Author" type = "xs: string" default = "Пушкін"

minOccurs = "1" maxOccurs = "1" />

Наприклад, це визначення задає, що елемент "Author" строкового типу, повинен з'являтися один і лише один і раз, і якщо він не вказаний, то набуває значення "Пушкін".

<xs: element name = "Child" type = "xs: string"

maxOccurs = "unbounded" />

Параметр maxOccurs = "unbounded" вказує, що елемент може зустрічатися будь-яку кількість разів.

Параметр ref дозволяє посилатися на вже описаний в даному файлі глобальний елемент або атрибут, щоб уникнути повторного опису одних і тих же елементів.

2. визначити прості і складні типи.

У XSD є зумовлені типи - приблизно такі ж, як в. NET. Під час роботи програми вони перетворяться в типи. NET. На їх підставі можна будувати складні типи, схожі на структури мов програмування. Складний тип складається з послідовності описів елементів. Визначимо складний тип:

<xs:complexType name="Quote">

    <xs:sequence>

      <xs: element name = "Text" type = "xs: string" minOccurs = "1"

maxOccurs = "1" />

      <xs: element name = "Author" type = "xs: string" default = "Пушкін"

minOccurs = "1" maxOccurs = "1" />

    </ xs: sequence>

  </ xs: complexType>

Тег <xs:sequence> визначає, що елементи в даному типі повинні з'являтися в заданому порядку. Якби використовувався тег <xs:all>, То порядок появи елементів міг би бути будь-яким.

Тег <xs:choice> схожий на структуру з варіантами. Він визначає, що в елементі даного типу повинен бути тільки один з вкладених елементів:

<xs:complexType name="StateProvinceType">

  <xs:choice>

    <xs:element name="State" type="xs:string"/>

    <xs:element name="Province" type="xs:string"/>

  </ xs: choice>

</ xs: complexType>

Прості типи теж будуються на основі стандартних типів, накладаючи різні обмеження. Типи можуть бути глобальними або вкладеними у визначення елементів. У попередньому прикладі визначений глобальний складний тип Quote.

Глобальний тип можна використовувати у визначенні елементів:

<xs:element name="Quote" type="Quote" maxOccurs="unbounded" />

У наступному прикладі визначений простий тип, вкладений у визначення елементу MyValue:

<xs:element name="MyValue" type="MyInteger"/>

<xs:simpleType name="MyInteger">

   <xs:restriction base="xs:positiveInteger">

      <xs:minInclusive value="1"/>

      <xs:maxInclusive value="10"/>

   </ xs: restriction>

</ xs: simpleType>

Значеннями цього типу можуть бути цілі позитивні числа від 1 до 10.

Простий тип може бути перерахуванням:

<xs:simpleType name="Answers">

    <xs:restriction base="xs:string">

      <xs:enumeration value="yes">

      </ xs: enumeration>

      <xs:enumeration value="no" />

      <xs:enumeration value="don't know" />

    </ xs: restriction>

  </ xs: simpleType>

3. додавати нові групи і групи атрибутів.

У визначенні складного типу можуть фігурувати атрибути. Припустимо, ми хочемо побудувати схему такого файлу:

<? xml version = "1.0" encoding = "utf-8"?>

<FilmChoices>

  <Film Title='Броненосец "Потемкін"'>

    <Year> 1925 </ Year>

    <Director> Ейзенштейн </ Director> </ Film>

  <Film Title="Война і мір">

    <Year> 1967 </ Year>

    <Director> Сергій Бондарчук </ Director> </ Film>

  <Film Title ="Девятая рота">

    <Year> 2005 </ Year>

    <Director> Федір Бондарчук </ Director> </ Film>

</ FilmChoices>

Необхідно зажадати наявність атрибуту Title:

<xs:attribute name="Title" type="xs:string" use="required"/>

Атрибути можуть бути тільки простих типів.

4. додавати анотації.

Анотації дозволяють вставляти опис існуючих елементів - таким чином, у файл додається документація:

<xs:complexType name="Quote">

    <xs:annotation>

      <xs:documentation>

        Цитати різних авторів

      </ xs: documentation>

    </ xs: annotation>

<xs:documentation> призначається для читачів файлу, а <xs:appinfo> - Для обробних файл програм.

Повний опис синтаксису XSD можна прочитати за адресою http://www.w3.org/2001/XMLSchema.xsd.

Редагувати XSD-файли в Visual Studio 2005 можна і через вихідний код, і за допомогою дизайнера. Для XML-документа можна автоматично згенерувати відповідну йому схему. У вікні властивостей XML-документа можна задати як файл схеми, так і файл перетворення. У такому випадку студія автоматично перевіряє файл на відповідність схемі і IntelliSense навіть підставляє теги з цього файлу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]