Проект

Общее

Профиль

XML » История » Версия 1

Александр Александров, 22.04.2019 00:47

1 1 Александр Александров
h1. XML
2
3
h2. Вопросы
4
5
# Что такое XML?
6
# Как определяется корректность XML-документа?
7
# Чем well-formed XML отличается от valid?
8
# Что такое пространство имен?
9
# Что такое простые типы в XSD?
10
# Что такое сложныетипы в XSD?
11
# Какие элементы и атрибуты XSD Вы знаете? Кратко опишите их.
12
# Какие существуют XML парсеры?
13
# Что такое XPath?
14
# Что такое XQuery?
15
# Каким парсером можно сделать изменения в XML структуре и сохранить в файл?
16
# Кратко опишите DOM, SAX, StAX анализаторы.
17
# Когда следует использовать DOM, а когда - SAX, StAX анализаторы?
18
# Недостатки XML DTD перед XML Schema
19
# XML Schema - промышленный стандарт описания XML-документов
20
# Что такое XSLT?
21
# Что такое маршаллизация и демаршализация?
22
# Что такое JAXP?
23
# Назовите основные пакеты JAXP.
24
# Что такое JAXB?
25
26
h2. Ответы
27
28
h3. Что такое XML?
29
30
XML(eXtensible Markup Language - расширяемый язык разметки) - текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML).
31
32
h3. Как определяется корректность XML-документа?
33
34
Корректность XML-документа определяют следующие два компонента:
35
36
* синтаксическая корректность (well-formed) - то есть соблюдение всех синтаксических правил XML;
37
* действительность (valid) - то есть данные соответствуют некоторому набору правил, определенных пользователем; правила определяют структуру и формат данных в XML. Валидность XML-документа определяется наличием DTD или XML-схемы (XSD) и соблюдением правил, которые там приведены.
38
39
h3. Чем well-formed XML отличается от valid?
40
41
Отличие:
42
43
* well-formed XML - тот, который пропускается парсером.
44
* valid XML - тот, который пропускается парсером И валидатором.
45
46
h3. Что такое пространство имен?
47
48
Пространство имен (namespace) - введено для разделения наборов элементов с соответствующими правилами, описанными схемой. Пространство имен объявляется с помощью атрибута xmlns и префикса, который используется для элементов из данного пространства.
49
50
h3. Что такое простые типы в XSD?
51
52
Элементы, которые не имеют атрибутов и дочерних элементов, называются простыми и должны иметь простой тип данных. Существуют стандартные простые типы, например string (представляет  строковое значение), boolean (логическое значение), integer (целое значение), float (значение с плавающей точкой), ID (уникальный идентификатор), gYear (год) и др.
53
54
h3. Что такое сложные типы в XSD?
55
56
Элементы, содержащие в себе атрибуты и/или дочерние элементы, называются сложными. Сложные элементы создаются с помощью элемента complexType. Так же, как и в простом типе атрибут name задает имя типа.
57
58
h3. Какие элементы и атрибуты XSD Вы знаете? Кратко опишите их.
59
60
Ниже приведён список элементов и атрибутов ХSD:
61
62
schema - корневой элемент любой схемы XML. Может содержать несколько атрибутов, например версию схемы.
63
xmlns - каждый элемент схемы имеет стандартный префикс xs: (или xsd:, может быть использован любой префикс), который связан с пространством имен схемы XML (xmlns) путем объявления: xmlns:xsd="http://www.w3.org/2001/XMLSchema".
64
* element - элементы объявляются с помощью элемента element. Например, order - это элемент, который в документе выглядит как <order id="1234" date="11/08/2013" total_amount="93.48">
65
* type - элемент может иметь простой тип, например string, decimal, long или double (type="xs:long") или сложный (type="customer").
66
* minOccurs, maxOccurs - определяет минимальное или максимальное количество появлений типа. Может быть положительным целым числом или иметь значение unbounded, которое говорит о том, что верхней границы нет.
67
* complexType - определяет комплексный тип, имеющий собственные элементы, подэлементы и атрибуты. Элемент типа complexType может содержать другие элементы типа complexType. Например, комплексный тип order содержит другой комплексный элемент.
68
* sequence - элемент может содержать другие элементы, которые называются элементами-потомками. Элемент такого типа указывает, что элементы-потомки должны следовать в цепочке. Каждый потомок может встречаться от 0 до неограниченного количества раз.
69
* attribute - комплексный тип может иметь один или несколько атрибутов, которые определены с помощью элементов типа attribute. Тип orderLine имеет два атрибута: item и quantity.
70
* choice - используется для указания, что может присутствовать только один набор элементов.
71
* complexContent - комплексный тип может расширять или ограничивать другой комплексный тип с помощью элемента типа complexContent.
72
* extension - элемент такого типа расширяет существующий элемент типа simpleType или complexType.
73
74
h3. Какие существуют XML парсеры?
75
76
Существуют SAX, DOM, JDOM парсеры. А STAX, TRAX, XPATH - это API для работы с ними.
77
78
h3. Что такое XPath?
79
80
Path (XML Path Language) - это язык запросов который предназначен для произвольного обращения к частям XML или XHTML документа. В документе всегда имеется корневой элемент. У элемента дерева всегда существуют предки (кроме корневого элемента, у которого предков нет) и могут существовать потомки. Каждый элемент дерева находится на определенном уровне вложенности. У элементов на одном уровне бывают предыдущие и следующие за ним элементы.
81
82
Строка XPath - это фактически путь к элементу в дереве, где каждый уровень разделяется косой чертой «/». В результате обработки выражения XPath получается объект, который может быть:
83
84
* набор узлов (node-set) - неупорядоченный набор узлов без дубликатов
85
* булево значение (boolean) - true или false
86
* число (number) - число с плавающей точкой
87
* строка (string) - последовательность UCS символов
88
89
h3. Что такое XQuery?
90
91
XQuery - это универсальный язык запросов к XML-данным, содержащий средства как для выборки, так и для трансформации XML-данных. XQuery синтаксически похож на SQL, его набор ключевых слов включает в себя FOR, LET, WHERE, ORDER BY или RETURN. С помощью XQuery можно выполнять сложные запросы, создавая сложные условия или упорядочивая результаты.
92
93
h3. Каким парсером можно сделать изменения в XML структуре и сохранить в файл?
94
95
Изменение можно сделать с помощью DOM и XPATH.
96
97
h3. Кратко опишите DOM, SAX, StAX анализаторы.
98
99
DOM (Document Object Model - объектная модель документов) - платформенно-независимый программный интерфейс, позволяющий программами скриптам управлять содержимым документов HTML и XML, а
100
также изменять их структуру и оформление. Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел
101
которого содержит элемент, атрибут, текстовый, графический или любо другой объект. Узлы связаны между собой отношениями родитель-потомок. SAX (Simple API for XML) базируется на модели последовательной одноразовой обработки и не создает внутренних деревьев. При прохождении по XML вызывает соответствующие методы у классов, реализующих интерфейсы, предоставляемые SAX-парсером.
102
103
StAX (Streaming API for XML) не создает дерево объектов в памяти, но, в отличие от SAX-парсера, за переход от одной вершины XML к другой отвечает приложение, которое запускает разбор документа.
104
105
h3. Когда следует использовать DOM, а когда - SAX, StAX анализаторы?
106
107
DOM-анализаторы следует использовать тогда, когда нужно знать структуру документа и может понадобиться изменять эту структуру либо использовать информацию из XML-документа несколько раз. SAX/StAX-анализаторы используются тогда, когда нужно извлечь информацию о нескольких элементах из XML-файла либо когда информация из документа нужна только один раз.
108
109
h3. Недостатки XML DTD перед XML Schema
110
111
Недостатки XML DTD.
112
113
* Отличный от XML синтаксис языка. То есть, DTD не является XML. В связи с этим могут возникать разнообразные проблемы с кодировкой и верификацией XML-документов.
114
* Нет проверки типов данных. В XML DTD существует лишь один тип данных – строка. В связи с этим, например, если в числовом поле будет текст, документ все равно пройдет верификацию, так как XML DTD не может проверить тип данных.
115
* Нельзя поставить в соответствие одному XML-документу больше одного DTD описания. То есть, верифицировать документ можно лишь одним DTD описанием. Если их несколько, то придется переделывать описания и совмещать все в одном файле, что очень неудобно.
116
* Это были основные недостатки XML DTD, которые с успехом исправлены в промышленном стандарте описания XML-документов XML Schema.
117
118
h3. XML Schema - промышленный стандарт описания XML-документов
119
120
Если быть кратким, то XML Schema делает следующее:
121
122
* Описывает названия элементов и атрибутов (словарь).
123
* Описывает взаимосвязь между элементами и атрибутами, а также их структуру (модель содержания).
124
* Описывает типы данных.
125
126
Также хочу заметить, что на данный момент при помощи схем можно описывать практически все. То есть, схема - это универсальный способ описания грамматики данных, который может применяться не только для верификации XML-документов, но и описания баз данных и т.д. Таким образом, область применения схем на данный момент очень широкая.
127
128
h3. Что такое XSLT?
129
130
XSLT (eXtensible Stylesheet Language Transformations) - расширяемый язык преобразования листов стилей. Язык XSLT служит транслятором, с помощью которого можно свободно модифицировать исходный текст. XLST играет решающую роль в утверждении XML в качестве универсального языка хранения и передачи данных. Область применения XSLT широка - от электронной коммерции до беспроводного Web.
131
132
h3. Что такое маршаллизация и демаршализация?
133
134
Маршаллизация - механизм преобразования данных из java-объектов в конкретное хранилище, будь то документ XML, база данных или простой текстовый файл. 
135
136
Демаршаллизация - обратный процесс преобразования данных из внешних источников в структуру хранения, поддерживаемую виртуальной машиной.
137
138
Проблемой остается организация взаимно однозначного соответствия информации в источнике, например, XML-документе, и экземпляре типа данных,принимающем эту информацию
139
140
h3. Что такое JAXP?
141
142
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) стандарт.
143
144
Архитектура JAXP:
145
146
{{dmsf_image(263)}}
147
148
h3. Назовите основные пакеты JAXP.
149
150
JAXP состоит из четырех пакетов. В них вы найдете интерфейсы и классы, предназначенные для анализа и преобразования XML-данных.
151
152
* javax.xml.parsers - общий интерфейс для анализаторов DOM и SAX.
153
* org.w3c.dom - общий API для работы с DOM в Java.
154
* org.xml.sax - определяет интерфейсы, использованные для анализаторов SAX.
155
* javax.xml.transform - API XLST для преобразования XML в другие типы документов.
156
157
h3. Что такое JAXB?
158
159
JAXB (Java Architecture for XML Binding) - это мост между XML и Java, Java API для маршалинга объекта в XML и восстановления (демаршалинг) объекта из XML файла. Часто используется в веб сервисах для представления объекта в виде XML схемы и передачи ее по сети. Также, такой способ передачи данных имеет свой плюс при обмене данных между системами, написанными на разных языках.
Go to top