Ответы на вопросы на собеседование XML.

  • Что такое XML? 

XML(eXtensible Markup Language - расширяемый язык разметки) - текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, 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 Вы знаете? Кратко опишите их.

Ниже приведён список  элементов и атрибутов ХСД:
  • 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?

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

Рассказать друзьям:

0 коментарі :

Отправить комментарий