Содержание

Слайд 2

Документ XML

Документ XML

Слайд 3

Части документа XML Документ Документом XML называется объект самого высокого уровня,

Части документа XML
Документ
Документом XML называется объект самого
высокого уровня, который

охватыва­ет все
представленное с его помощью содержимое,
от первого символа до послед­него.
Если речь идет о документе XML, то под этим
подразумевается и структура, и
информационное наполнение данного
конкретного документа XML.
Слайд 4

Объявление документа Объявление документа является необязательным, но на практике его всегда

Объявление документа
Объявление документа является необязательным, но на практике его всегда следует

включать в документ. Если в документе предусмотрено использова­ние объявления, то это объявление должно находиться в документе на самом первом месте.
Слайд 5

Объявление представляет собой специальный дескриптор, который начинается с вопросительного знака (указывающего

Объявление представляет собой специальный дескриптор, который начинается с вопросительного знака (указывающего

на то, что этот дескриптор является директи­вой препроцессора), за которым следует ключевое слово xml:

Слайд 6

В этом объявлении имеется один обязательный атрибут (атрибут — это средство

В этом объявлении имеется один обязательный атрибут (атрибут — это средство

дополнительного описания элемента) — version.
В объявление можно включить дополнительные атрибуты — encoding и standalone. Атрибут encoding содержит обозначение типа символьного набора, который используется в документе XML. Атрибут standalone сообщает, является ли документ XML независимым.
Слайд 7

Пример В спецификации XML строго запрещено использование имен элементов, которые начина­ются с букв xml.

Пример

В спецификации XML строго запрещено использование имен

элементов, которые начина­ются с букв xml.
Слайд 8

Элементы (теги) документа Элементы обозначаются именами и служат для непосредственного представления

Элементы (теги) документа
Элементы обозначаются именами и служат для непосредственного представления информации,

хранящейся в документе. С помощью элементов может быть выраже­на практически любая информация. В состав элемента входит согласованная пара дескрипторов, состоящая из начального и конечного дескрип­торов, которые называют также открывающим и закрывающим дескрипторами.
Слайд 9

Открывающий дескриптор начинается с открывающей угловой скобки ( ):

Открывающий дескриптор начинается с открывающей угловой скобки (<), содержит имя, а

также, возможно, несколько атрибутов, за которыми следует закрывающая угловая скобка (>):

Слайд 10

Исключением из этого правила являются элементы, содержащие в себе признак закрытия;

Исключением из этого правила являются элементы, содержащие в себе признак закрытия;

в этом случае закрывающей угловой скобке начального дескриптора пред­шествует символ /, а конечный дескриптор отсутствует:

Слайд 11

Конечные дескрипторы содержат точно такое же имя, как и начальные дескрип­торы

Конечные дескрипторы содержат точно такое же имя, как и начальные дескрип­торы

(в котором также учитывается регистр), но в конечном дескрипторе перед име­нем элемента должна находиться косая черта (/).

(Здесь может находится информация)
<== Закрывающий дескриптор.
Слайд 12

Элементы могут также включать атрибуты в составе открывающего (но не закрывающего)

Элементы могут также включать атрибуты в составе открывающего (но не закрывающего)

дескриптора элемента. Наконец, эле­менты могут включать другие элементы, но в таком случае внутренний элемент дол­жен быть закрыт прежде, чем будет закрыт внешний элемент:




Слайд 13

Узлы В связи с тем что элементы в документе XML должны

Узлы
В связи с тем что элементы в документе XML должны подчиняться

строгим пра­вилам вложенности, между элементами естественным образом формируются отноше­ния вложенности, которые образуют иерархическую структуру, имеющую древовид­ную форму. Каждая конечная точка связи в этом дереве называется узлом.
Слайд 14

Корневой узел (root) Узел второго уровня, непосредственный потомок корневого узла Узел

Корневой узел (root)

Узел второго уровня, непосредственный потомок корневого узла

Узел следующего уровня,

дочерний узел предыдущего уровня

Узел следующего уровня, дочерний узел предыдущего уровня

Иерархическая структура документа XML

Слайд 15

Корневой узел Корневой узел представляет собой элемент, который содержит все прочие

Корневой узел
Корневой узел представляет собой элемент, который содержит все прочие элементы

в документе, в том числе элемент самого документа. Каждый документ XML имеет один (и только один) корневой узел.
Слайд 16

Документ XML и фрагмент XML (соответствующий поддереву иерархического дере­ва документа) принципиально

Документ XML и фрагмент XML (соответствующий поддереву иерархического дере­ва документа) принципиально

отличаются тем, что документ XML имеет корневой узел. Ни один фрагмент XML не может рассматриваться как равнозначный целому документу, поскольку в нем отсутствует корневой узел.
Слайд 17

Атрибуты Атрибуты могут быть представлены только в контексте элемента. Атрибуты при­меняются

Атрибуты
Атрибуты могут быть представлены только в контексте элемента. Атрибуты при­меняются как

средство дополнительного описания элемента и находятся в пределах границ открывающего дескриптора элемента:

Возможно, что-то еще из XML

Слайд 18

Независимо от того, к какому типу данных относится информация, представлен­ная в

Независимо от того, к какому типу данных относится информация, представлен­ная в

виде значения атрибута, это значение должно быть заключено в парные оди­нарные или двойные кавычки.
Слайд 19

Формально правильный документ Основным требованием к любому документу XML является то,

Формально правильный документ
Основным требованием к любому документу XML является то,

чтобы он соответ­ствовал определению формально правильного документа. Определение формально правильного документа XML регламентирует, какие элементы могут входить в состав документа, какую структуру он должен иметь и из каких частей состоять.
Полный перечень на сайте
www.w3.org/TR/REC-xml
консорциума W3C.
Слайд 20

Каждый документ XML должен иметь уникальный корневой узел. Каждому открывающему дескриптору

Каждый документ XML должен иметь уникальный корневой узел.
Каждому открывающему дескриптору должен

соответствовать закрывающий дескриптор с таким же именем (в котором учитывается регистр); закрываю­щий дескриптор может отсутствовать, только если открывающий дескриптор содержит признак закрытия в самом себе.
Слайд 21

Не допускается, чтобы за открывающим дескриптором одного элемента непо­средственно следовал закрывающий дескриптор другого элемента.

Не допускается, чтобы за открывающим дескриптором одного элемента непо­средственно следовал закрывающий

дескриптор другого элемента.
Слайд 22

В информационном наполнении элемента не допускается непосредственно использовать символы, которые предназначены

В информационном наполнении элемента не допускается непосредственно использовать символы, которые предназначены

для разметки структуры до­кумента XML и его интерпретации с помощью синтаксического анализатора XML.
Слайд 23

Если необходимо представить любой из таких специальных символов, то вместо него

Если необходимо представить любой из таких специальных символов, то вместо него

должна использоваться управляющая последовательность (которая снова преобразуется в исходный символ во время выборки информационного наполнения элемента).
Слайд 24

Пример формально правильного документа.

Пример формально правильного документа.






Слайд 25

Примеры кода XML

Примеры кода XML



Family=”Иванов” Type=”Мобильный 1” Number=”123-45-67-89” />



Слайд 26




< phone Type=”Домашний” Number=”123-45-67” />

< phone Type=”Мобильный 1” Number=”123-45-67-89” />
< phone Type=”Мобильный 2” Number=”123-45-67-98” />
< phone Type=”Рабочий” Number=”123-45-76” />
< /Abonent >

Слайд 27




< phone Type=”Домашний” Number=”123-45-67” />

< phone Type=”Мобильный 1” Number=”123-45-67-89” />
< phone Type=”Мобильный 2” Number=”123-45-67-98” />
< phone Type=”Рабочий” Number=”123-45-76” />
< /Abonent >

< phone Type=”Домашний” Number=”231-45-67” />
< phone Type=”Мобильный 1” Number=”231-45-67-89” />
< phone Type=”Мобильный 2” Number=”231-45-67-98” />
< phone Type=”Рабочий” Number=”231-45-76” />
< /Abonent >

Слайд 28

Сравнение способов представления данных с помощью элементов и атрибутов Нет твердых

Сравнение способов представления данных с помощью элементов и атрибутов
Нет твердых и

окончательно установленных правил в отношении того, какую информацию следует представлять с помощью эле­ментов или атрибутов. Атрибут описывает то, что является свойством элемента, к которому относится сам атрибут.
Применение атрибутов оправдано в тех ситуациях, когда некоторое значение на­ходится связи "один к одному" с элементом и являет­ся его неотъемлемой частью. Использование элементов в большей степени оправдано, если между самим эле­ментом и теми данными, которые он описывает, чаще всего проявляется связь "один ко многим".
Слайд 29

Пространства имен Чтобы связать с определенным пространством имен весь документ, достаточно

Пространства имен
Чтобы связать с определенным пространством имен весь документ, достаточно ввести

в определение корневого элемента документа ссылку на пространство имен в виде специального атрибута (именуемого xmlns). Кроме того, ссылки на пространства имен (опять-таки формируемые с помощью атрибута xmlns) могут быть введены и в другие элементы документа, если требуется распространить действие данного конкретного простран­ства имен только на ту часть документа, которую занимает данный элемент.
Слайд 30

xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl='../Customers.xsl'>


xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
sql:xsl='../Customers.xsl'>

name="Customers" sql:relation="Customers"/>










Слайд 31

В документе имеются ссылки на три пространства имен. Одно из них

В документе имеются ссылки на три пространства имен. Одно из них

относит­ся к определению XDR (External Data Representation - внешнее представление данных) — международный стандарт передачи данных в Интернете), другое представляет собой пространство имен типов данных Microsoft (в этом пространстве имен представлен перечень, определяющий количество и специфику различных ти­пов данных) и, наконец, предусмотрено специальное пространство имен SQL, пред­назначенное для работы со средствами интеграции XML программы SQL Server. Некоторые атрибуты (включая заданные в корневом элементе) уточняются с по­мощью информации о пространстве имен (в качестве примера можно указать атри­бут sql: relation).
Слайд 32

Средства формирования документов XML, в СУБД SQL Server Основные направления поддерж­ки

Средства формирования документов XML, в СУБД SQL Server
Основные направления поддерж­ки XML:
Поддержка

нескольких методов выборки данных из обычных столбцов и оформление этих данных в формате XML.
Обеспечение возможности непосредственного хранения данных XML в СУБД SQL Server.
Слайд 33

Предоставление функций запроса к данным, хранящимся в первоначальном формате XML, с

Предоставление функций запроса к данным, хранящимся в первоначальном формате XML, с

помощью языка XQuery.
Поддержка средства обеспечения целостности данных, хранящихся в формате XML, с помощью схем XML.
Обеспечение индексации данных XML.
Слайд 34

Выборка реляционных данных в формате XML Конструкция FOR XML определена как

Выборка реляционных данных в формате XML
Конструкция FOR XML определена как

еще одна необязатель­ная конструкция, которая добавлена в конце существующей синтаксической структу­ры оператора SELECT языка T-SQL.
Слайд 35

SELECT [FROM j [WHERE restrictive condition>] [GROUP BY [HAVING Restrictive condition

SELECT
[FROM j
[WHERE restrictive condition>]
[GROUP BY

>
[HAVING Restrictive condition based on the GROUP BY results>]
[ORDER BY ]
[FOR XML {RAW|AUTO|EXPLICIT [, XMLDATA] [, ELEMENTS]
[, BINARY base64] [PATH]
[OPTION (, [, ...n])]
Слайд 36

В конструкции FOR XML предусмотрено несколько различных начальных опций, позволяющих указать,

В конструкции FOR XML предусмотрено несколько различных начальных опций, позволяющих указать,

как должны быть отформатированы результаты запроса в виде кода XML.
Слайд 37

Опция RAW. Ключевое слово RAW указывает, что каждая строка данных в

Опция RAW. Ключевое слово RAW указывает, что каждая строка данных в

резуль­тирующем наборе должна быть возвращена как один элемент данных. Элемент получает имя "row", а каждое поле строки оформляется в виде атрибута эле­мента "row".
Слайд 38

Опция AUTO. При использовании опции AUTO каждый элемент получает обо­значение, взятое

Опция AUTO. При использовании опции AUTO каждый элемент получает обо­значение, взятое

либо из имени таблицы, либо из псевдонима имени таблицы, которая является источником данных.
Слайд 39

При использовании опции AUTO поддерживается также дополнительная опция ELEMENTS, позволяющая указать,

При использовании опции AUTO поддерживается также дополнительная опция ELEMENTS, позволяющая указать,

что данные полей должны быть представле­ны в виде элементов, а не атрибутов.
Слайд 40

Опция EXPLICIT. Опция EXPLICIT требует применения наиболее сложных синтаксических конструкций при

Опция EXPLICIT. Опция EXPLICIT требует применения наиболее сложных синтаксических конструкций при

оформлении запроса, но в конеч­ном итоге позволяет получить наибольший контроль над тем, как будут вы­глядеть данные в коде XML.
Слайд 41

Возможности опции EXPLICIT перекрываются возможностями, предусмотренными в опции PATH, поэтому поддержка

Возможности опции EXPLICIT перекрываются возможностями, предусмотренными в опции PATH, поэтому поддержка

опции EXPLICIT осуществляется главным образом для обеспечения обратной совместимости.
Слайд 42

Опция PATH [ ('ElementName') ]. Создает упаковщик элементов для каждой строки

Опция PATH [ ('ElementName') ]. Создает упаковщик элементов <строки> для каждой

строки в результирующем наборе. Для упаковщика элементов <строки> можно дополнительно задать имя элемента. Использование директивы PATH дает более простой способ написания запросов, чем написание запросов с помощью директивы EXPLICIT.
Слайд 43

Необходимо учитывать, что ни одна из указанных опций не обеспечивает формирования обязательного корневого элемента.

Необходимо учитывать, что ни одна из указанных опций не обеспечивает формирования

обязательного корневого элемента.
Слайд 44

Кроме четырех основных опций форматирования, предусмо­трены также другие необязательные параметры, позволяющие

Кроме четырех основных опций форматирования, предусмо­трены также другие необязательные параметры, позволяющие

дополнительно уточнять формат выходных данных, предоставляемых в СУБД SQL Server при выпол­нении запроса с ключевым словом FOR XML.
Слайд 45

Опция XML DATA. Эта опция служит для СУБД SQL Server указанием

Опция XML DATA. Эта опция служит для СУБД SQL Server указанием

на то, что формируемым результатам должно предшествовать определение схемы XML. Схема определяет структуру документа (в том числе состав используемых ти­пов данных), а также правила, которым должны соответствовать данные XML.
Слайд 46

Опция ELEMENTS. Эта опция является применимой, только если используется также опция

Опция ELEMENTS. Эта опция является применимой, только если используется также опция

форматирования AUTO. Опция ELEMENTS служит для СУБД SQL Server указанием на то, что данные полей в возвращаемых результатах должны быть оформлены в виде вложенных элементов, а не атрибутов.
Слайд 47

Опция BINARY BASE64. Эта опция является для СУБД SQL Server указанием

Опция BINARY BASE64. Эта опция является для СУБД SQL Server указанием

на то, что содержимое всех полей с двоичными данными (binary, varbinary, image varchar(max), nvarchar(max) ,varbinary(max)) должно быть закодировано в формате BASE64. Если используется опция AUTO, то опция BINARY BASE64 вводится в действие по умолчанию.
Слайд 48

Опция TYPE. Эта опция рассматривается в СУБД SQL Server в качестве

Опция TYPE. Эта опция рассматривается в СУБД SQL Server в качестве

указа­ния на то, что возвращаемые результаты должны быть обозначены как отно­сящиеся к типу данных xml, а не к применяемому по умолчанию символьному типу данных Unicode.
Слайд 49

Опция ROOT [ ('RootName') ]. С помощью данной опции можно указать,

Опция ROOT [ ('RootName') ]. С помощью данной опции можно указать,

что корневой элемент должен быть сформирован в СУБД SQL Server, поэтому разработчику не нуж­но об этом заботиться. В таком случае можно либо явно задать имя корневого элемента, либо предусмотреть использование имени корневого элемента, заданного по умолчанию (root).
Слайд 50

Опция XMLSCHEMA [ ('TargetNameSpaceURI') ]. Возвращает встроенную XSD-схему. При задании указанной

Опция XMLSCHEMA [ ('TargetNameSpaceURI') ]. Возвращает встроенную XSD-схему. При задании указанной

директивы, возвращающей заданное пространство имен схемы, дополнительно можно задать URI целевого пространства имен.
Слайд 51

Опция XSINIL. Директива ELEMENTS формирует XML, в котором каждое значение в

Опция XSINIL. Директива ELEMENTS формирует XML, в котором каждое значение в

столбце соответствует элементу XML. Если этот значение в столбце имеет значение NULL, элемент не добавляется. Указав в директиве ELEMENTS необязательный параметр XSINIL, можно запросить, чтобы для значений NULL тоже создавались элементы. В этом случае атрибут xsi:nil этого элемента имеет значение TRUE для каждого значения NULL в столбце. Данный параметр может быть указан только в директиве ELEMENTS.
Слайд 52

Опция ABSENT. Указывает, что соответствующие XML-элементы для столбцов со значениями NULL

Опция ABSENT. Указывает, что соответствующие XML-элементы для столбцов со значениями NULL

к XML-результату не добавляются. Указывайте данный параметр только с директивой ELEMENTS.
Слайд 53

Режим EXPLICIT Режим EXPLICIT преобразует набор строк, получаемый в результате выполнения

Режим EXPLICIT
Режим EXPLICIT преобразует набор строк, получаемый в результате выполнения запроса,

в XML-документ. Для того чтобы режим EXPLICIT создал XML-документ необходимо написать запрос SELECT для создания набора строк, универсальной таблицы, имеющей определенный формат, так чтобы логика обработки могла создать желаемый XML.
Слайд 54

Запрос должен создавать следующие два столбца метаданных: первый столбец должен предоставлять

Запрос должен создавать следующие два столбца метаданных:
первый столбец должен предоставлять

номер тега текущего элемента (целочисленного типа), и этот столбец должен иметь имя Tag. В запросе должен быть указан уникальный номер тега для каждого элемента, который будет создан из набора строк;
Слайд 55

второй столбец должен задавать номер тега для родительского элемента, и этот

второй столбец должен задавать номер тега для родительского элемента, и этот

столбец должен иметь имя Parent. Таким образом, столбцы Tag и Parent предоставляют сведения об иерархии.
Слайд 56

Значения этих столбцов метаданных вместе со сведениями в именах столбцов используются

Значения этих столбцов метаданных вместе со сведениями в именах столбцов используются

для создания желаемого XML. Имена столбцов в запросе должны задаваться особым образом. Значение 0 или NULL в столбце Parent указывает на то, что у соответствующего элемента нет родителя. Такой элемент добавляется в XML в качестве элемента верхнего уровня.
Слайд 57

Столбцы Tag и Parent имеют вполне определенное назначение, а имена остальных

Столбцы Tag и Parent имеют вполне определенное назначение, а имена остальных

столб­цов включают несколько фрагментов метаданных. Единственным обозначением, позволяющим определить, где за­канчивается один фрагмент метаданных и начинается другой, служит восклицатель­ный знак (!).
Для именования столбцов применяется примерно такой формат:
!![]
[!{element|hide|ID|IDREFI REFS|xml|xmltext|cdata}]
Слайд 58

Директивы id, idref и idrefs Ни одна из директив id, idref

Директивы id, idref и idrefs
Ни одна из директив id, idref и

idref s не выполняет каких-либо действий, если в сочетании с ними не используется также опция XMLDATA (которая должна следо­вать за опцией EXPLICIT в конструкции FOR XML).
Слайд 59

С их помощью формируются документы, предназначенные для проверки по схеме, которая

С их помощью формируются документы, предназначенные для проверки по схеме, которая

содержит соответствующие объявления.
Директивы вводят до­полнения к схеме, позволяющие провести проверку определенных характеристик документа, но само проведение такой проверки без схемы является невозможным.
Слайд 60

Режим PATH Режим PATH является простым способом смешивания элементов и атрибутов.

Режим PATH
Режим PATH является простым способом смешивания элементов и атрибутов.

Режим PATH является также простым способом создания дополнительных вложенных объектов для отражения сложных свойств. В режиме PATH имена или псевдонимы столбцов обрабатываются как выражения XPath.
Слайд 61

XPath XPath (XML Path Language) — язык запросов к элементам XML-документа.

XPath
XPath (XML Path Language) — язык запросов к элементам XML-документа.

Разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. XPath призван реализовать навигацию по DOM в XML.
Слайд 62

DOM (Document Object Model — «объектная модель документа») — это не

DOM (Document Object Model — «объектная модель документа») — это не

зависящий от платформы и языка программный интерфейс, позволяющий получить доступ к содержимому HTML, XHTML и XML-документов, а также изменять содержимое, структуру и оформление таких документов.
В XPath используется компактный синтаксис, отличный от принятого в XML.
Слайд 63

ФУНКЦИЯ OPENXML OPENXML — это функция для работы с наборами строк,

ФУНКЦИЯ OPENXML
OPENXML — это функция для работы с наборами строк, которая

позволяет от­крыть переданную ей строку. Это означает, что документ XML можно использовать в операции соединения или даже сделать его источником входных данных, применив операцию INSERT. . . SELECT или SELECT INTO.
Слайд 64

Основное различие между OPENXML и другими функциями состоит в том, что

Основное различие между OPENXML и другими функциями состоит в том, что

в сочетании с этой функцией необходимо использовать целый ряд системных хранимых процедур для подготовки документа, а затем для очистки памяти после завершения обработки документа.
Слайд 65

Для подготовки документа к работе служит процедура sp_xml_preparedocument, которая перемещает переданную

Для подготовки документа к работе служит процедура sp_xml_preparedocument, которая перемещает переданную

ей строку в память и выполняет предварительный синтаксический анализ этой строки для достижения оптимальной производительно­сти запроса.
sp_xml_preparedocument @hdoc = OUTPUT,
[, @xmltext = ]
[, @xpath_namespaces = ]
Слайд 66

После вызова этой хранимой процедуры и сохранения дескриптора документа можно приступить

После вызова этой хранимой процедуры и сохранения дескриптора документа можно приступить

к использованию функции OPENXML. Синтаксис вызова функции :
OPENXML(,[, ]) [WITH ()]
Слайд 67

- дескриптор представляет собой целочисленное значение, которое должно быть получено в

- дескриптор представляет собой целочисленное значение, которое должно быть получено

в виде выходного параметра после вызова процедуры sp_xml_preparedocument.
- представляющий собой обозначение пути к узлу, который должен служить в качестве на­чальной точки для всех запросов.
Слайд 68

- позволяет ссылаться на любые части документа XML с помощью указания

- позволяет ссылаться на любые части документа XML с

помощью указания пути пере­мещения относительно базового узла, заданного в этом параметре.
- позволяют указать, должно ли быть в результатах вы­зова функции OPENXML отдано предпочтение элементам или атрибутам. Возможные значения (0, 1, 2, 8).
Слайд 69

ФУНКЦИЯ OPENROWSET Содержит все необходимые сведения о соединении, которые требуются для

ФУНКЦИЯ OPENROWSET
Содержит все необходимые сведения о соединении, которые требуются для доступа

к удаленным данным источника данных OLE DB. Это альтернативный метод для доступа к таблицам на связанном сервере.
Функция OPENROWSET также поддерживает массовые операции с помощью встроенного поставщика BULK, позволяющего считывать данные из файла и возвращать их в виде набора строк.
Слайд 70

OPENROWSET ( { 'provider_name', { 'datasource';'user_id';'password' | 'provider_string' } , {

OPENROWSET
( { 'provider_name', { 'datasource';'user_id';'password'
   | 'provider_string' }
   , {

[ catalog. ] [ schema. ] object
    | 'query'
}
   | BULK 'data_file',
       { FORMATFILE ='format_file_path' [ ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )