XML¶
Вопросы¶
- Что такое XML?
- Как определяется корректность XML-документа?
- Чем well-formed XML отличается от valid?
- Что такое пространство имен?
- Что такое простые типы в XSD?
- Что такое сложныетипы в XSD?
- Какие элементы и атрибуты XSD Вы знаете? Кратко опишите их.
- Какие существуют XML парсеры?
- Что такое XPath?
- Что такое XQuery?
- Каким парсером можно сделать изменения в XML структуре и сохранить в файл?
- Кратко опишите DOM, SAX, StAX анализаторы.
- Когда следует использовать DOM, а когда - SAX, StAX анализаторы?
- Недостатки XML DTD перед XML Schema
- XML Schema - промышленный стандарт описания XML-документов
- Что такое XSLT?
- Что такое маршаллизация и демаршализация?
- Что такое JAXP?
- Назовите основные пакеты JAXP.
- Что такое JAXB?
Ответы¶
Что такое XML?¶
XML - текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML).
Как определяется корректность XML-документа?¶
Корректность XML-документа определяют следующие два компонента:
- синтаксическая корректность (well-formed) - то есть соблюдение всех синтаксических правил XML;
- действительность (valid) - то есть данные соответствуют некоторому набору правил, определенных пользователем; правила определяют структуру и формат данных в XML. Валидность XML-документа определяется наличием DTD или XML-схемы (XSD) и соблюдением правил, которые там приведены.
Чем well-formed XML отличается от valid?¶
Отличие:
- well-formed XML - тот, который пропускается парсером.
- valid XML - тот, который пропускается парсером И валидатором.
Что такое пространство имен?¶
Пространство имен (namespace) - введено для разделения наборов элементов с соответствующими правилами, описанными схемой. Пространство имен объявляется с помощью атрибута xmlns и префикса, который используется для элементов из данного пространства.
Что такое простые типы в XSD?¶
Элементы, которые не имеют атрибутов и дочерних элементов, называются простыми и должны иметь простой тип данных. Существуют стандартные простые типы, например string (представляет строковое значение), boolean (логическое значение), integer (целое значение), float (значение с плавающей точкой), ID (уникальный идентификатор), gYear (год) и др.
Что такое сложные типы в XSD?¶
Элементы, содержащие в себе атрибуты и/или дочерние элементы, называются сложными. Сложные элементы создаются с помощью элемента complexType. Так же, как и в простом типе атрибут name задает имя типа.
Какие элементы и атрибуты XSD Вы знаете? Кратко опишите их.¶
Ниже приведён список элементов и атрибутов ХSD:
schema - корневой элемент любой схемы XML. Может содержать несколько атрибутов, например версию схемы.xmlns - каждый элемент схемы имеет стандартный префикс xs: (или xsd:, может быть использован любой префикс), который связан с пространством имен схемы XML (xmlns) путем объявления: xmlns:xsd="http://www.w3.org/2001/XMLSchema".
- element - элементы объявляются с помощью элемента element. Например, order - это элемент, который в документе выглядит как <order id="1234" date="11/08/2013" total_amount="93.48">
- type - элемент может иметь простой тип, например string, decimal, long или double (type="xs:long") или сложный (type="customer").
- minOccurs, maxOccurs - определяет минимальное или максимальное количество появлений типа. Может быть положительным целым числом или иметь значение unbounded, которое говорит о том, что верхней границы нет.
- complexType - определяет комплексный тип, имеющий собственные элементы, подэлементы и атрибуты. Элемент типа complexType может содержать другие элементы типа complexType. Например, комплексный тип order содержит другой комплексный элемент.
- sequence - элемент может содержать другие элементы, которые называются элементами-потомками. Элемент такого типа указывает, что элементы-потомки должны следовать в цепочке. Каждый потомок может встречаться от 0 до неограниченного количества раз.
- attribute - комплексный тип может иметь один или несколько атрибутов, которые определены с помощью элементов типа attribute. Тип orderLine имеет два атрибута: item и quantity.
- choice - используется для указания, что может присутствовать только один набор элементов.
- complexContent - комплексный тип может расширять или ограничивать другой комплексный тип с помощью элемента типа complexContent.
- extension - элемент такого типа расширяет существующий элемент типа simpleType или complexType.
Какие существуют XML парсеры?¶
Существуют SAX, DOM, JDOM парсеры. А STAX, TRAX, XPATH - это API для работы с ними.
Что такое XPath?¶
Path (XML Path Language) - это язык запросов который предназначен для произвольного обращения к частям XML или XHTML документа. В документе всегда имеется корневой элемент. У элемента дерева всегда существуют предки (кроме корневого элемента, у которого предков нет) и могут существовать потомки. Каждый элемент дерева находится на определенном уровне вложенности. У элементов на одном уровне бывают предыдущие и следующие за ним элементы.
Строка XPath - это фактически путь к элементу в дереве, где каждый уровень разделяется косой чертой «/». В результате обработки выражения XPath получается объект, который может быть:
- набор узлов (node-set) - неупорядоченный набор узлов без дубликатов
- булево значение (boolean) - true или false
- число (number) - число с плавающей точкой
- строка (string) - последовательность UCS символов
Что такое XQuery?¶
XQuery - это универсальный язык запросов к XML-данным, содержащий средства как для выборки, так и для трансформации XML-данных. XQuery синтаксически похож на SQL, его набор ключевых слов включает в себя FOR, LET, WHERE, ORDER BY или RETURN. С помощью XQuery можно выполнять сложные запросы, создавая сложные условия или упорядочивая результаты.
Каким парсером можно сделать изменения в XML структуре и сохранить в файл?¶
Изменение можно сделать с помощью DOM и XPATH.
Кратко опишите DOM, SAX, StAX анализаторы.¶
DOM (Document Object Model - объектная модель документов) - платформенно-независимый программный интерфейс, позволяющий программами скриптам управлять содержимым документов HTML и XML, а
также изменять их структуру и оформление. Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел
которого содержит элемент, атрибут, текстовый, графический или любо другой объект. Узлы связаны между собой отношениями родитель-потомок. SAX (Simple API for XML) базируется на модели последовательной одноразовой обработки и не создает внутренних деревьев. При прохождении по XML вызывает соответствующие методы у классов, реализующих интерфейсы, предоставляемые SAX-парсером.
StAX (Streaming API for XML) не создает дерево объектов в памяти, но, в отличие от SAX-парсера, за переход от одной вершины XML к другой отвечает приложение, которое запускает разбор документа.
Когда следует использовать DOM, а когда - SAX, StAX анализаторы?¶
DOM-анализаторы следует использовать тогда, когда нужно знать структуру документа и может понадобиться изменять эту структуру либо использовать информацию из XML-документа несколько раз. SAX/StAX-анализаторы используются тогда, когда нужно извлечь информацию о нескольких элементах из XML-файла либо когда информация из документа нужна только один раз.
Недостатки XML DTD перед XML Schema¶
Недостатки XML DTD.
- Отличный от XML синтаксис языка. То есть, DTD не является XML. В связи с этим могут возникать разнообразные проблемы с кодировкой и верификацией XML-документов.
- Нет проверки типов данных. В XML DTD существует лишь один тип данных – строка. В связи с этим, например, если в числовом поле будет текст, документ все равно пройдет верификацию, так как XML DTD не может проверить тип данных.
- Нельзя поставить в соответствие одному XML-документу больше одного DTD описания. То есть, верифицировать документ можно лишь одним DTD описанием. Если их несколько, то придется переделывать описания и совмещать все в одном файле, что очень неудобно.
- Это были основные недостатки XML DTD, которые с успехом исправлены в промышленном стандарте описания XML-документов XML Schema.
XML Schema - промышленный стандарт описания XML-документов¶
Если быть кратким, то XML Schema делает следующее:
- Описывает названия элементов и атрибутов (словарь).
- Описывает взаимосвязь между элементами и атрибутами, а также их структуру (модель содержания).
- Описывает типы данных.
Также хочу заметить, что на данный момент при помощи схем можно описывать практически все. То есть, схема - это универсальный способ описания грамматики данных, который может применяться не только для верификации XML-документов, но и описания баз данных и т.д. Таким образом, область применения схем на данный момент очень широкая.
Что такое XSLT?¶
XSLT (eXtensible Stylesheet Language Transformations) - расширяемый язык преобразования листов стилей. Язык XSLT служит транслятором, с помощью которого можно свободно модифицировать исходный текст. XLST играет решающую роль в утверждении XML в качестве универсального языка хранения и передачи данных. Область применения XSLT широка - от электронной коммерции до беспроводного Web.
Что такое маршаллизация и демаршализация?¶
Маршаллизация - механизм преобразования данных из java-объектов в конкретное хранилище, будь то документ XML, база данных или простой текстовый файл.
Демаршаллизация - обратный процесс преобразования данных из внешних источников в структуру хранения, поддерживаемую виртуальной машиной.
Проблемой остается организация взаимно однозначного соответствия информации в источнике, например, XML-документе, и экземпляре типа данных,принимающем эту информацию
Что такое JAXP?¶
JAXP (Java API for XML Processing) - набор абстрактных API, упрощающих обработку XML данных с помощью программ, написанных на Java. Усиливает стандартные анализаторы SAX (Simple API for XML Parsing) и DOM (Document Object Model). JAXP также поддерживает преобразования расширяемого языка таблиц стилей (XSLT) стандарт, давая вам контроль над представлением данных и позволяя преобразовать данные в другие XML-документы или в другие форматы, такие как HTML. JAXP обеспечивает поддержку пространств имен (namespace), то есть имеется возможность работать с DTD. JAXP дает приложению возможность производить лексический разбор и модификацию документов XML независимо от конкретной реализации обработки XML. С версии 1.4, JAXP реализует API Потоковой передачи для XML (StAX) стандарт.
Архитектура JAXP:
Назовите основные пакеты JAXP.¶
JAXP состоит из четырех пакетов. В них вы найдете интерфейсы и классы, предназначенные для анализа и преобразования XML-данных.
- javax.xml.parsers - общий интерфейс для анализаторов DOM и SAX.
- org.w3c.dom - общий API для работы с DOM в Java.
- org.xml.sax - определяет интерфейсы, использованные для анализаторов SAX.
- javax.xml.transform - API XLST для преобразования XML в другие типы документов.
Что такое JAXB?¶
JAXB (Java Architecture for XML Binding) - это мост между XML и Java, Java API для маршалинга объекта в XML и восстановления (демаршалинг) объекта из XML файла. Часто используется в веб сервисах для представления объекта в виде XML схемы и передачи ее по сети. Также, такой способ передачи данных имеет свой плюс при обмене данных между системами, написанными на разных языках.
Обновлено Александр Александров больше 5 лет назад · 1 изменени(я, ий)
Go to top