Project

General

Profile

Actions

XML

Вопросы

  1. Что такое XML?
  2. Как определяется корректность XML-документа?
  3. Чем well-formed XML отличается от valid?
  4. Что такое пространство имен?
  5. Что такое простые типы в XSD?
  6. Что такое сложныетипы в XSD?
  7. Какие элементы и атрибуты XSD Вы знаете? Кратко опишите их.
  8. Какие существуют XML парсеры?
  9. Что такое XPath?
  10. Что такое XQuery?
  11. Каким парсером можно сделать изменения в XML структуре и сохранить в файл?
  12. Кратко опишите DOM, SAX, StAX анализаторы.
  13. Когда следует использовать DOM, а когда - SAX, StAX анализаторы?
  14. Недостатки XML DTD перед XML Schema
  15. XML Schema - промышленный стандарт описания XML-документов
  16. Что такое XSLT?
  17. Что такое маршаллизация и демаршализация?
  18. Что такое JAXP?
  19. Назовите основные пакеты JAXP.
  20. Что такое 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:

xml q018 p01

Назовите основные пакеты 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 схемы и передачи ее по сети. Также, такой способ передачи данных имеет свой плюс при обмене данных между системами, написанными на разных языках.

Updated by Александр Александров over 1 year ago · 1 revisions

Go to top