- •Огляд сучасних Інтернет - технологій. Технологія asp.Net
- •Серверні елементи керування Label, TextBox, Button, Image, Table
- •Робота з xml
- •Файли перетворення документа
- •Файли визначення схеми документа
- •Клас XmlReader
- •Клас xPathDocument
- •Елемент управління xml
- •Створення простої сторінки, що використовує інформацію з бази даних
- •Елементи керування для відображення даних (repeater, datalist і datagrid)
- •Шаблони дизайну сторінок asp.Net
- •Зміст за замовчуванням
- •Програмне призначення головної сторінки
- •Вкладені майстер-сторінки
- •Послідовність подій
- •Створення структури переходів Web вузла
- •Елемент керування SiteMapPath
- •Програмне керування TreeView
- •Елемент керування Menu
Файли визначення схеми документа
Відповідно до сучасного стандарту, пройшов стандартизацію документ повинен відповідати пов'язаному з ним файлу 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 навіть підставляє теги з цього файлу.
