Справочник от Автор24
Поделись лекцией за скидку на Автор24

XML

  • 👀 229 просмотров
  • 📌 185 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «XML» pdf
XML XML (eXtensible Markup Language) – расширяемый язык разметки, утвержденный консорциумом W3C (World Wide Web Concorcium) в феврале 1998 г. как XML 1.0. Стандартом стал с ноября 2008 г. Данные, называемые элементами, хранятся в XML-документе в виде строк текста и ограничены тэгами – специальными текстовыми метками, заключенными в символы <, >, чувствительными к регистру и фактически отделяющими единицы данных друг от друга. Тэги, хотя и должны подчиняться спецификации, являются пользовательскими, что существенно отличает XML от HTML. Структура XML-документа Любой XML-документ включает следующие основные части:  Пролог (необязателен в XML 1.1);  Тело документа  Эпилог (необязателен, следует за деревом элементов). Пример XML-документа: 1 Пролог содержит указания для анализатора XML и приложений: 1) Объявление XML (XML Declaration): версия XML (version), кодировка символов (encoding), в которой написан документ: UTF-8, UTF-16, Windows 1251 и т.д., автономность: standalone= "yes"/ "no" ("yes" – игнорировать внешние декларации DTD); 2) Комментарии (например, ); 3) Команды обработки (например, указание браузеру, как отображать XML -документ с таблицей стилей из файла *.css); 4) Символы пустых пространств; 5) Необязательное объявление DTD. Пример типичного пролога XML-документа: "1.0" encoding="UTF-8" standalone="yes"?> Корректным (well-formed) называют XML-документ, соответствующий спецификации стандарта XML. Правильным (valid) называют XML-документ, пролог которого содержит указание на описание синтаксиса данного документа и строго соответствует ей. W3C допускает две схемы объявления XML-документов: 1) DTD (Document Type Definition) – язык, используемый для записи фактических синтаксических нотаций с помощью декларативных правил. 2) XML Schema обладает более мощными возможностями, чем DTD и опирается на использование файлов с расширением *.xsd (XML Schema Definition). Версия 1.1 одобрена в апреле 2012 г. Типы данных XML-документов 2 В XML Schema есть различие между сложными типами элементов, которые могут иметь вложенные элементы и атрибуты, и простыми типами, которые не могу иметь вложенных элементов и атрибутов. Есть различие и между определениями и объявлениями. Так, определения создают новые типы элементов (простые и сложные). Объявления же задают имена и содержимое элементов и атрибутов (простых и сложных), которые могут использоваться в XML-документах, соответствующих данной схеме. Простые типы данных делятся на две группы:  примитивные (primitive);  выводимые (derived). К примитивным типам данных относятся такие типы, как string, boolean, double, decimal и др. Выводимые типы строятся на основе примитивных типов. Некоторые из них являются предопределенными (например, integer выводится из decimal), и, по сути, ограничивают значения по базовому типу. SQL/XML SQL/XML, или иначе XML-Related Specifications (Спецификации, связанные с XML), представляет собой расширение языка SQL и является частью стандарта ANSI/IEC SQL:2003 Part 14. Для разработчиков SQL SQL/XML не должен вызывать затруднений, поскольку представляет собой дополнения к языку SQL. Поскольку SQL является состоявшимся языком, то есть много инструментов и инфраструктуры и для SQL/XML. Он позволяет создавать XML-структуры из реляционных источников. SQL/XML используется фирмами IBM и Oracle в своих СУБД. 3 SQL/XML определяет расширения SQL для использования XML в сочетании с SQL. Вводятся типы данных XML наряду с несколькими подпрограммами, функциями, а также связывание XML-в-SQL типов данных для поддержки обработки и хранения XML в SQL-базах данных. Спецификация SQL/XML включает в себя функции создания XMLданных. Эти функции позволяют пользователю создавать новые XMLэлементы или атрибуты с определенными значениями, например, из реляционных таблиц. Другие функции, например, XMLCONCAT или XMLAGG, могут быть использованы для объединения небольших XMLфрагментов в более крупные. Список доступных функций конструирования включает в себя:  XMLELEMENT  XMLATTRIBUTES  XMLFOREST  XMLCONCAT  XMLNAMESPACES  XMLCOMMENT  XMLPI  XMLDOCUMENT  XMLAGG  и др. SQL/XML также определяет функции, позволяющие пользователю встраивать XQuery-выражения в SQL-запросы. Такие функции включают в себя XMLQUERY и XMLTABLE. Тогда как XMLQUERY возвращает значения XML-типа, функция XMLTABLE может взять XML-данные в качестве вводных и вывести сгенерированную реляционную таблицу. Предикаты XML-данных, как 4 например, условия поиска, могут быть выражены при помощи предиката XMLEXISTS, обычно указывающиеся при помощи WHERE в SQL-запросе. XQuery Консорциум W3C к 2007 году разработал язык запросов XQuery 1.0 к источникам данных, представленных на XML. XQuery — язык запросов и функциональный язык программирования, разработанный для обработки данных в формате XML, простого текста, JSON или других предметно-специфичных форматах. XQuery использует XML как свою модель данных. Предназначен для запроса и преобразования коллекций структурированных и неструктурированных данных. XQuery позиционируется как язык, предназначенный для интеграции данных из различных источников, в том числе XML-источников, таких как документы или WEB-сообщения и БД. Совокупность разработанных документов отражена в целом пакете спецификаций, которые влияют друг на друга. Так, выражения XQuery используют спецификацию XPath. Документы в формате XML содержат иерархии и для них характерен внутренний порядок. Они самоописывающиеся, так как состоят из контента и разметки – тегов, идентифицирующих контент. Табличные структуры данных, поддерживаемые СУБД на базе SQL, являются однородными и линейными, строки, как таковые, не упорядочены. Различия между этими моделями данных привели к нескольким принципиальным отличиям в соответствующих им языках запросов. Например, XQuery поддерживает выражения пути, что позволяет перемещаться по иерархической структуре XML-документа. 5 Структура спецификация XQuery XSLT XPointer XPath 1.0 XQuery 1.0 XPath 2.0 XQuery 1.0 был разработан рабочей группой XML Query в составе организации W3C. Эта работа координируется другой рабочей группой, работающей над XSLT 2.0. Эти две группы разделяют ответственность за XPath 2.0, входящий в состав XQuery 1.0. 3 ноября 2005 года XQuery 1.0 получил статус W3C Candidate Recommendation, а 23 января 2007 года XQuery 1.0, одновременно с XSLT 2.0 и XPath 2.0, получил статус официальной рекомендации (W3C Recommendation). В настоящее время ведутся работы по развитию этого стандарта, с добавлением выражений для свободного поиска по тексту и для внесения изменений в XML документы и базы данных, а также для процедурных операций. XQuery версии 3.0 принят W3C 8 апреля 2014 года. XQuery версии 3.1 принят W3C 21 марта 2017 года. XPath (XML Path Language) — язык запросов к элементам XMLдокумента. Разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. XPath призван реализовать навигацию по DOM в XML. В XPath используется компактный синтаксис, отличный от принятого в XML. В 2007 году завершилась разработка версии 2.0, которая теперь является составной частью языка XQuery 1.0. В декабре 2009 года началась разработка версии 2.1, которая использует XQuery 1.1. 6 XSLT (eXtensible Stylesheet Language Transformations) — язык преобразования XML-документов. Спецификация XSLT входит в состав XSL и является рекомендацией W3C. При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть сериализовано в виде XML-документа, XHTMLдокумента (только для XSLT 2.0), HTML-документа или простого текстового файла. Правила выбора (и, отчасти, преобразования) данных из исходного дерева пишутся на языке запросов XPath. XSLT имеет множество различных применений, в основном в области веб-программирования и генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их представления, как часть общей парадигмы MVC (англ. Model-view-controller). Другой стандартной задачей является преобразование XML-документов из одной XML-схемы в другую. На данный момент самой популярной версией является XPath 1.0. Это связано с отсутствием поддержки XPath 2.0 со стороны открытых библиотек. В частности, речь идёт о LibXML, от которой зависит поддержка языка в браузерах, с одной стороны, и поддержка со стороны серверного интерпретатора, с другой. XSLT разработан рабочей группой XSL Консорциума Всемирной паутины. Версия 1.0 была одобрена в качестве рекомендации 16 ноября 1999 года. После выхода первой версии начались работы над версией 1.1, но в 2001 году они были прекращены, а рабочая группа XSL присоединилась к рабочей группе XQuery для совместной работы над XPath 2.0. Впоследствии XPath 2.0 послужил основой при разработке XSLT версии 2.0. 7 Версия 2.0 была одобрена в качестве рекомендации 24 января 2007 года. Версия 3.0 была одобрена 8 июня 2017 года. В качестве инструмента выполнения запросов XQuery можно использовать редактор EditiX 2010 Free Edition. http://free.editix.com Бесплатный редактор MS XML Notepad 2007 https://www.microsoft.com/en-us/download/details.aspx?id=7973 Типы данных XQuery XML является основой системы типов XQuery и модели данных. XQuery поддерживает как типизированные, так и не типизированные данные, а для данных SQL всегда определен конкретный тип. В XQuery нет пустых значений, поскольку в XML недостающие или неизвестные данные пропускаются, а SQL, как известно, использует NULLзначения для представления недостающих или неизвестных значений данных. Примитивные типы данных, аналогичные XML Schema:  Числа, включая целые и числа с плавающей запятой  Булевы значения: true (истина) и false (ложь)  Строки символов, например, "Hello world!". Строки неизмененны (immutable), то есть символ в строке не может быть изменен, поскольку нет типа данных символ.  Различные типы для представления дат, времени и продолжительности. Date специфицирована в формате "YYYYMM-DD", Time – "hh:mm:ss", DateTime – "YYYY-MM- DDThh:mm:ss". 8  Несколько типов, связанных с XML. Например, QName – это часть локального имени и URL, используемого в WEB. Для извлечения данных из узлов предусмотрены функции:  fn:data() – извлекает скалярное типизированное значение из узла типизированного XML (подключен файл *.xsd) и строку для нетипизированного;  fn:string() – возвращает значение узла в виде строки. Для типизации значений используют либо приведение типов, либо специальные функции:  Явное приведение типов: $a/price cast as xs:float;  Неявное для числовых и атомарных: xs:float($a/price)  Функция преобразования, например, строки в число: fn:number($a/price). Проверить возможность преобразования с получением ответа true|false можно с помощью выражения: $a/price castable as xs:float → true В XQuery есть также типы данных, необходимые для представления величин XML. Для этого используются величины узлов следующих семи типов: элемент, атрибут, пространство имен, текст, комментарий, инструкция обработки и документ (корень). Это типы очень похожи на соответствующие классы DOM: Node, Element, Comment, Attribute и так далее. В некоторых реализациях XQuery используются объекты DOM для задания величин узлов, хотя могут применяться и другие представления. DOM (от англ. Document Object Model — «объектная модель документа») — это независящий от платформы и языка программный интерфейс, позволяющий программам 9 и скриптам получить доступ к содержимому HTML-, XHTML- и XML-документов, а также изменять содержимое, структуру и оформление таких документов. Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями «родительский-дочерний». Результатом последовательность вычисления простых выражения величин. XQuery Например, (3, является 4, 5) – последовательность из 3 целых. Многие из стандартных функций, предназначенных для работы с узлами, возвращают последовательности. Пример: Функция count() принимает один аргумент и возвращает число величин в последовательности. Тогда выражение: let $a:=(3,4), $b:=($a,$a), $c:=(99), $d:=(0) return (count($a), count($b), count($c), count($d)) равняется (2, 4, 1, 1), поскольку $b то же самое, что и (3, 4, 3, 4) Выражения XQuery В XQuery любая конструкция – выражение, результатом вычисления которого является некоторое значение. Первичные выражения включают литералы, переменные, вызовы функций, конструкторы и скобки для управления приоритетом операций. Ссылка на переменную в выражении XQuery – это QName, перед которым 10 ставится знак $, например, $a. Функции вызываются с использованием префикса "fn:" – например, fn:max((2,3)). Логические выражения используют операции and и or для вычисления логического значения (true или false) для операндов. Для отрицания предусмотрена функция not(). Выражения пути – выражения XPath, определяющие местонахождение узлов, например, элементов, атрибутов и текстовых узлов в документе. Путь включает шаги адресации, разделяемые символом "/", и каждый такой шаг состоит из трех частей:  оси – определяет направления движения;  условия проверки узлов (задается тип или имена узлов, которые будут выбраны) – обязательная часть, представляющая собой последовательность вложенных тэгов и символа "*" (дочерний узел с любым именем, по сути, аналог element()), например: //book/genre и //book/*;  предиката – необязательной части в квадратных скобках, внутрь которого можно включать дополнительные условия проверки элементов по другим осям, функции, выражения с операциями (+, -, <, > и т.д.), например: //book[genre eq 'Computer']. Типовые сокращения для путей адресации: . .. / // | name @ [n] текущий узел родительский узел дочерние узлы текущий и все дочерние узлы (//book) набор дочерних узлов, например: $a/genre | $a/price дочерние узлы с именем name, например: //book/author атрибут, например: return {@a/data(@*)} дочерний узел с номером n, например: //book[1] 11 Основные типовые сокращения для условий проверки узлов: node() – узел любого типа; *|element([*|name]) – узел-элемент, возможно, с именем name; text() – текстовый узел; attribute([@*|@name]) – узел-атрибут, возможно, с именем name. Выражения последовательности конструируют, фильтруют и комбинируют последовательности элементов и узлов, и они никогда не бывают вложенными. Предусмотрено три вида выражений последовательности:  Создание "запятая" (конструирование) (1, 2, 5); последовательности: выражение диапазона, оператор создающее последовательность целых чисел (1 to 100).  Выражение фильтрации последовательности, состоящее из первичного выражения, за которым может следовать предикат, фильтрующий последовательность, возвращаемую первичным выражением, например: price < 5 and genre="Romance".  Операторы для комбинирования последовательностей, являющих упорядоченными множествами: union или |, intersect, except. Арифметические выражения, поддерживаемые XQuery, в порядке возрастания приоритета: +, - – сложение и вычитание значений; *, div, idiv, mod – умножение, деление, целочисленное деление, остаток. Например, для цены книги, равной 44,95: return {$a/price div 2, $a/price idiv 2, $a/price mod 2} 12 Результат: 22,475 22 0,95 Выражения сравнения. В XQuery предусмотрено три варианта выражений сравнения:  сравнение значений – сравниваются два атомарных значения;  общие сравнения – сравниваются две последовательности любой длины, и определяется, удовлетворяет ли заданному сравнению хотя бы один элемент первой последовательности и один элемент первой последовательности и один элемент второй последовательности, например: (1, 2) = (2, 3);  сравнение узлов – сравниваются два узла для определения их идентичности или взаимного расположения в XML-документе. сравнение значений общие сравнения eq = ne != lt < le <= gt > ge >= Операция is << >> Назначение возвращает true, если оба операнда являются одним узлов возвращает true, если первый узелоперанд предшествует второму узлуоперанду в дереве документа возвращает true, если первый узелоперанд следует за вторым узломоперандом в дереве документа Например, следующие выражения для файла books.xml вернут true: 13 return //book[title="Maeve Ascendant"] << //book[title="Oberon's Legasy"] return //book[title="Maeve Ascendant"] is //book[publish_date="2000-11-17"] Основные функции: max(), min(), count(), sum(), avg(), distinct-values(), exists(), empty(), concat(), contains(), last(), position(), boolean(), not(), floor(), ceiling(), round(), substring[-after|before](), string[-length](), sterts|ends-with(), doc(), document(), collection(), @id. Оператор запроса FLWOR FLWOR – это сокращение от слов конструкции: for, let, where, order by и return. Инструкция FLWOR состоит из следующих частей.  Одно или несколько предложений FOR, которые привязывают одну или несколько переменных-итераторов к входным последовательностям. Входные последовательности также могут быть выражениями XQuery (например, выражениями XPath). Они являются либо последовательностями узлов, либо последовательностями атомарных значений. Последовательности атомарных значений могут быть получены с помощью литералов или функцийконструкторов. В SQL Server нельзя использовать построенные XML-узлы в качестве входных последовательностей.  Необязательное предложение let. Это предложение присваивает значение данной переменной для конкретной итерации. Присвоенное выражение может быть выражением XQuery, например выражением XPath, и может возвращать либо 14 последовательность узлов, либо последовательность атомарных значений.  Переменная-итератор. Дополнительно для этой переменной с помощью ключевого слова as можно указать тип.  Необязательное предложение where. Это предложение применяется в качестве предиката фильтра при итерации.  Необязательное предложение order by, упорядочивающего результаты запроса (ascending действует по умолчанию).  Выражение return. Выражение в предложении return конструирует результат, возвращаемый инструкцией FLWOR. Примеры: 1) for $a in (1, 2), $b in (4, 5) return {$a, $b} 2) for $a in doc("file:///C:/books.xml")//book where $a/genre='Computer' return {data($a/author)} 3) let $a:=(1,2), $b:=(4,5) return {$a, $b} 15 4) for $x in (1.5, 2.6, 1.9), $y in (.5, 1.6, 1.7) where ((fn:floor($x) eq 1) and (fn:floor($y) eq 1)) return {$x, $y} 5) for $cat at $i in ("Hoffman", "Giovanni", "Pereira") return {$cat} 6) for $b in //catalog/book return {$b/title, if ($b/genre="Computer") then $b/price else $b/publish_date} 16 7) Организатор варианта typeswitch..case..default. Выбор варианта основан на типе (например, имени тэга), а не на значении. Особых преимуществ оператор варианта перед оператором условия не имеет, однако, может упростить конструирование результата. for $a in doc("C:/books.xml")//book[price<5]/* return typeswitch($a) case $b as element(title) return $b case $b as element(genre) return $b default return '' 17 8) for $a in doc('file:///C:/books.xml')//book for $b in doc('file:///C:/books.xml')//book where $b/price=$a/price and $a/genre!=$b/genre return concat($b/title, '-', $a/title) 9) Кванторы существования some и every: {some|every} in (, …) satisfies for $b in doc('file:///C:/books.xml')//book where every $p in $b//genre satisfies contains ($p, "Computer") order by xs:string($b/title) return {$b/title, $b/author } 18 for $b in doc('file:///C:/books.xml')//book where some $p in $b//genre satisfies contains ($p, "Fantasy") order by xs:decimal($b/price) descending return $b/title 10) Пользовательские функции Например, создание функции, подсчитывающей среднюю стоимость книг указанного жанра: declare function local:getAvgPrice($g as xs:string?) as xs:double? {let $a:=fn:doc('C:/books.xml')//book /fn:avg(//book[genre=$g]/price) return fn:distinct-values($a)}; Тогда при вызове можно использовать ее в запросах: for $a in doc ('file:///C:/books.xml')//book[price>local:getAvgPrice('Computer')] return {fn:string($a//title), ':', fn:string($a//price)} 19
«XML» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Смотреть все 70 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot