Как создать XSD схему из XML на Java

XML (eXtensible Markup Language) — это распространенный формат обмена данными, который используется для структурирования информации. Он часто применяется в различных приложениях, таких как веб-сервисы, базы данных и многие другие. Однако при работе с XML-документами часто возникает потребность в проверке и валидации их структуры. Для этого широко применяются схемы XSD (XML Schema Definition), которые определяют правила для структурирования XML-документов.

В данном руководстве мы рассмотрим, как создать XSD-схему из XML-документа с использованием Java. Это может быть полезным, если у вас нет доступа к оригинальной XSD-схеме или если вы хотите создать новую схему на основе существующего XML-документа.

Мы будем использовать Java-библиотеку JAXB (Java Architecture for XML Binding), которая предоставляет удобные инструменты для работы с XML-документами. С ее помощью мы сможем сгенерировать XSD-схему на основе структуры XML-документа и заполненных данных.

В следующих разделах мы рассмотрим подробные шаги, которые нужно предпринять для создания XSD-схемы из XML в Java с помощью JAXB.

Создание XSD схемы

XML Schema Definition (XSD) является языком описания структуры и типов данных в XML документах. Создание XSD схемы позволяет задать правила и ограничения на структуру и содержимое XML файлов.

Для создания XSD схемы, которая описывает структуру XML документа, можно использовать различные инструменты и подходы. Вот несколько шагов, которые помогут вам создать XSD схему:

  1. Определите структуру XML документа: определите элементы, атрибуты и их иерархию.
  2. Задайте типы данных: определите типы данных для каждого элемента и атрибута.
  3. Опишите ограничения и правила: определите ограничения и правила для элементов и атрибутов, такие как обязательность, уникальность и т. д.
  4. Создайте XSD файл: используйте соответствующий синтаксис XSD для описания структуры и типов данных в XML документах.

Пример простой XSD схемы:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="book">

<xs:complexType>

<xs:sequence>

<xs:element name="title" type="xs:string"/>

<xs:element name="author" type="xs:string"/>

<xs:element name="year" type="xs:integer"/>

</xs:sequence>

<xs:attribute name="id" type="xs:string"/>

</xs:complexType>

</xs:element>

</xs:schema>

В этом примере определена XSD схема для элемента <book>, который имеет атрибут «id» типа «xs:string» и содержит элементы <title>, <author> и <year> с соответствующими типами данных.

После создания XSD схемы, ее можно использовать для валидации XML документов на соответствие заданным правилам и ограничениям. XSD схемы облегчают процесс разработки и обеспечивают стандартизацию структуры и типов данных в XML документах.

Определение структуры XML

Прежде чем приступить к созданию XSD схемы из XML в Java, необходимо понимать, как определяется структура XML.

XML (Extensible Markup Language) представляет собой язык разметки, используемый для описания структуры данных. XML состоит из элементов, которые могут содержать текстовую информацию или другие элементы. Каждый элемент имеет имя и может иметь атрибуты и содержимое.

Структура XML определяется следующим образом:

  1. Элементы: Основные строительные блоки XML. Каждый элемент имеет открывающий и закрывающий тег, внутри которых может содержаться текст или другие элементы.
  2. Атрибуты: Дополнительная информация, связанная с элементами. Атрибуты представляют собой пары «имя-значение» и указываются в открывающем теге элемента.
  3. Содержимое: Текст или другие элементы, находящиеся внутри элемента.

Структура XML может быть представлена в виде древовидной структуры, где каждый элемент является узлом, а содержимое или другие элементы — его потомками. Наличие и порядок элементов, атрибутов и содержимого в XML должны соответствовать определенным правилам, определенным в соответствующей XSD схеме.

Например, следующий фрагмент XML демонстрирует простую структуру с одним элементом и одним атрибутом:

<book genre="fantasy">

<title>The Lord of the Rings</title>

</book>

Элемент <book> содержит атрибут «genre» со значением «fantasy» и один подэлемент <title>, который содержит текст «The Lord of the Rings».

Понимание структуры XML является ключевым для создания XSD схемы, которая определит допустимые элементы, атрибуты и их структуру для данного XML документа.

Знакомство с XSD

XSD (XML Schema Definition) — это язык описания структуры и типов данных в XML документах. Он позволяет определить ожидаемую структуру XML файла, а также описать правила валидации и типы данных.

XSD схема представляет собой файл с расширением .xsd, который содержит элементы, типы данных и правила валидации для определенной XML структуры.

Основная цель XSD схемы — задать правила, которым должны соответствовать XML документы. Она может определить:

  • Структуру документа: какие элементы присутствуют, в каком порядке и с какими атрибутами
  • Типы данных: какие значения могут принимать элементы, какие условия проверки данных
  • Связи между элементами: какие элементы являются дочерними или родительскими

Описание XSD схемы может быть использовано для проверки корректности XML документов и для генерации соответствующего кода на Java или других языках программирования.

Пример XSD схемы:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="book">

<xs:complexType>

<xs:sequence>

<xs:element name="title" type="xs:string"/>

<xs:element name="author" type="xs:string"/>

<xs:element name="year" type="xs:integer"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

В представленном примере, схема описывает структуру XML документа, который должен содержать элемент ``. Элемент `` в свою очередь должен содержать дочерние элементы ``, `<author>` и `<year>`, имеющие типы `xs:string` (строка) и `xs:integer` (целое число) соответственно.</p><p>Варианты использования XSD схемы могут быть различными: валидация XML документов перед их обработкой, автоматическая генерация кода на основе схемы, обмен структурированными данными между разными системами и т.д.</p><h2 id="sozdanie-xsd-s-pomoschyu-java">Создание XSD с помощью Java</h2><p>Создание XSD (XML Schema Definition) является важным этапом в процессе разработки XML-документов. XSD-схема определяет структуру и типы данных, которые могут содержаться в XML-документе.</p><p>Java предоставляет различные инструменты и библиотеки для создания XSD-схемы. Одним из таких инструментов является библиотека javax.xml.bind, которая позволяет генерировать XSD-схему на основе классов Java.</p><p>Вот некоторые шаги, которые необходимо выполнить для создания XSD-схемы с помощью Java:</p><ol><li>Создайте классы Java, которые соответствуют структуре XML-документа. Классы должны быть аннотированы с использованием аннотаций javax.xml.bind, таких как @XmlRootElement, @XmlElement и т. д.</li><li>Используйте класс javax.xml.bind.JAXBContext, чтобы создать контекст JAXB для ваших классов Java.</li><li>Используйте контекст JAXB для создания объекта javax.xml.bind.Schema, который представляет XSD-схему.</li><li>Используйте метод javax.xml.bind.Schema#write(java.io.File), чтобы сохранить XSD-схему в файле.</li></ol><p>Пример кода ниже демонстрирует, как создать XSD-схему из XML с использованием Java и библиотеки javax.xml.bind:</p><p><pre></p> <p>import java.io.File;</p> <p>import javax.xml.bind.JAXBContext;</p> <p>import javax.xml.bind.SchemaOutputResolver;</p> <p>import javax.xml.transform.Result;</p> <p>import javax.xml.transform.stream.StreamResult;</p> <p>public class XsdGenerator {</p> <p>public static void main(String[] args) throws Exception {</p> <p>JAXBContext jaxbContext = JAXBContext.newInstance(YourRootClass.class);</p> <p>SchemaOutputResolver outputResolver = new SchemaOutputResolver() {</p> <p>@Override</p> <p>public Result createOutput(String namespaceUri, String suggestedFileName) {</p> <p>File file = new File("your_schema.xsd");</p> <p>StreamResult result = new StreamResult(file);</p> <p>result.setSystemId(file.toURI().toString());</p> <p>return result;</p> <p>}</p> <p>};</p> <p>jaxbContext.generateSchema(outputResolver);</p> <p>}</p> <p>}</p> <p></pre></p><p>В приведенном выше примере создается файл your_schema.xsd, содержащий XSD-схему, основанную на классе YourRootClass.</p><p>После запуска кода ваша XSD-схема будет создана и сохранена в файле your_schema.xsd. Вы можете использовать эту схему для валидации XML-документов и обеспечения их соответствия вашей требуемой структуре и типам данных.</p><p>Вывод:</p><ul><li>Java предоставляет инструменты и библиотеки для создания XSD-схемы на основе классов Java.</li><li>Вы можете использовать библиотеку javax.xml.bind и классы JAXB для генерации XSD-схемы из XML.</li><li>Созданный XSD-файл может быть использован для валидации XML-документов и обеспечения их соответствия вашим требованиям.</li></ul><h2 id="zagruzka-i-chtenie-xml-fayla">Загрузка и чтение XML файла</h2><p>Для загрузки и чтения XML файла в Java можно использовать различные подходы. Рассмотрим два наиболее распространенных способа: с использованием DOM и SAX парсеров.</p><h3 id="dom-parser">DOM парсер</h3><p>DOM (Document Object Model) парсер создает в памяти древовидное представление XML файла, что позволяет легко получать доступ к его элементам и атрибутам.</p><p>Пример кода для загрузки и чтения XML файла с использованием DOM парсера:</p><p><pre><code>import javax.xml.parsers.DocumentBuilder;</p> <p>import javax.xml.parsers.DocumentBuilderFactory;</p> <p>import org.w3c.dom.Document;</p> <p>import org.w3c.dom.Element;</p> <p>import org.w3c.dom.Node;</p> <p>import org.w3c.dom.NodeList;</p> <p>public class DOMParserExample {</p> <p>public static void main(String[] args) {</p> <p>try {</p> <p>// Создание фабрики строителей документов</p> <p>DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</p> <p>DocumentBuilder builder = factory.newDocumentBuilder();</p> <p>// Загрузка XML файла и создание объекта документа</p> <p>Document document = builder.parse("example.xml");</p> <p>// Получение корневого элемента</p> <p>Element root = document.getDocumentElement();</p> <p>// Получение списка дочерних элементов</p> <p>NodeList nodeList = root.getChildNodes();</p> <p>// Перебор дочерних элементов</p> <p>for (int i = 0; i < nodeList.getLength(); i++) {</p> <p>Node node = nodeList.item(i);</p> <p>if (node.getNodeType() == Node.ELEMENT_NODE) {</p> <p>Element element = (Element) node;</p> <p>// Получение значения элемента</p> <p>String value = element.getTextContent();</p> <p>// Обработка значения элемента</p> <p>}</p> <p>}</p> <p>} catch (Exception e) {</p> <p>e.printStackTrace();</p> <p>}</p> <p>}</p> <p>}</p> <p></code></pre></p><h3 id="sax-parser">SAX парсер</h3><p>SAX (Simple API for XML) парсер работает по принципу событий: он обрабатывает каждый элемент XML файла по мере его обнаружения, не загружая весь файл в память.</p><p>Пример кода для загрузки и чтения XML файла с использованием SAX парсера:</p><p><pre><code>import org.xml.sax.Attributes;</p> <p>import org.xml.sax.SAXException;</p> <p>import org.xml.sax.helpers.DefaultHandler;</p> <p>import javax.xml.parsers.SAXParser;</p> <p>import javax.xml.parsers.SAXParserFactory;</p> <p>public class SAXParserExample {</p> <p>public static void main(String[] args) {</p> <p>try {</p> <p>// Создание фабрики парсеров</p> <p>SAXParserFactory factory = SAXParserFactory.newInstance();</p> <p>SAXParser parser = factory.newSAXParser();</p> <p>// Создание обработчика событий</p> <p>DefaultHandler handler = new DefaultHandler() {</p> <p>@Override</p> <p>public void startElement(String uri, String localName,</p> <p>String qName, Attributes attributes) throws SAXException {</p> <p>// Обработка начального тега элемента</p> <p>}</p> <p>@Override</p> <p>public void characters(char[] ch, int start, int length) throws SAXException {</p> <p>// Обработка содержимого элемента</p> <p>}</p> <p>};</p> <p>// Загрузка и чтение XML файла</p> <p>parser.parse("example.xml", handler);</p> <p>} catch (Exception e) {</p> <p>e.printStackTrace();</p> <p>}</p> <p>}</p> <p>}</p> <p></code></pre></p><p>При использовании SAX парсера необходимо переопределить методы обработки начальных тегов элементов и содержимого элементов в классе-обработчике событий.</p><p>Оба подхода имеют свои преимущества и недостатки, и выбор между ними зависит от требований проекта и размера XML файла.</p><h2 id="opredelenie-tipov-dannyh">Определение типов данных</h2><p>При создании XSD схемы для XML документа, одной из важных задач является определение типов данных, которые будут использоваться в схеме. Типы данных позволяют задать ограничения и правила для значений элементов и атрибутов.</p><p>Существует несколько встроенных типов данных в XML Schema Definition (XSD), таких как:</p><ul><li><strong>String</strong> — строковый тип данных;</li><li><strong>Boolean</strong> — булев тип данных (true или false);</li><li><strong>Numeric</strong> — числовой тип данных, включающий целочисленные и десятичные значения;</li><li><strong>Date/Time</strong> — тип данных для работы с датами и временем;</li><li><strong>Enum</strong> — перечислимый тип данных, задающий список допустимых значений;</li></ul><p>Наиболее распространенным типом данных является <strong>String</strong>. Он может содержать любую строку символов, и не имеет ограничений на длину. Однако, вы можете определить ограничения в XSD схеме, используя атрибуты, такие как <em>minLength</em> (минимальная длина строки) и <em>maxLength</em> (максимальная длина строки).</p><p>Для определения числовых типов данных в XSD схеме вы можете использовать типы <strong>int</strong> (целое число), <strong>integer</strong> (целое число без ограничений на размер), <strong>float</strong> (число с плавающей точкой) и другие. Атрибуты, такие как <em>minInclusive</em> (минимальное значение), <em>maxInclusive</em> (максимальное значение) и другие, позволяют задать ограничения для числовых значений.</p><p>Типы данных <strong>Date</strong> и <strong>Time</strong> позволяют работать с датами и временем. Они могут использоваться для задания ограничений, таких как <em>minInclusive</em> (минимальная дата) и <em>maxInclusive</em> (максимальная дата).</p><p>Тип данных <strong>Enum</strong> позволяет задать список допустимых значений для элемента или атрибута. Например, вы можете определить тип данных <em>enum</em> с дочерними элементами <em>value</em>, задающими список возможных значений. При этом, элемент или атрибут может принимать только одно из этих значений.</p><p>При определении типов данных в XSD схеме, всегда следует учитывать требования и ограничения документа, для которого создается схема. Типы данных должны быть корректно определены, чтобы обеспечить правильную обработку и валидацию XML документа.</p><h2 id="opredelenie-strokovyh-tipov">Определение строковых типов</h2><p>В XSD схеме для определения строковых типов используется элемент <strong><xs:simpleType></strong>. Этот элемент позволяет задать ограничения на значения атрибута или содержимого элемента.</p><p>Для определения строкового типа используется элемент <strong><xs:simpleType></strong> с атрибутом <strong>name</strong>, который задает имя типа. Внутри элемента <strong><xs:simpleType></strong> применяется элемент <strong><xs:restriction></strong>, который определяет ограничения на значения типа.</p><p>Например, для определения типа <strong>Имя</strong>, который должен состоять только из букв, можно использовать следующий код:</p><p><pre></p> <p><xs:simpletype name="Имя"></p> <p><xs:restriction base="xs:string"></p> <p><xs:pattern value="[а-яА-Я]+"/></p> <p></xs:restriction></p> <p></xs:simpleType></p> <p></pre></p><p>В примере выше, тип <strong>Имя</strong> является производным от базового типа <strong>xs:string</strong>, что означает, что он представляет собой строку. Однако, введено ограничение, что значения типа <strong>Имя</strong> должны состоять только из букв русского алфавита.</p><p>Также можно определить ограничения на длину строки, используя элементы <strong><xs:minLength></strong> и <strong><xs:maxLength></strong>. Например, для определения типа <strong>Адрес</strong>, который должен содержать от 5 до 50 символов, можно использовать следующий код:</p><p><pre></p> <p><xs:simpletype name="Адрес"></p> <p><xs:restriction base="xs:string"></p> <p><xs:minlength value="5"/></p> <p><xs:maxlength value="50"/></p> <p></xs:restriction></p> <p></xs:simpleType></p> <p></pre></p><p>В примере выше, тип <strong>Адрес</strong> является производным от базового типа <strong>xs:string</strong>, и для него определено ограничение на минимальную и максимальную длину строки.</p><p>При использовании определенных строковых типов в XSD схеме, элементы и атрибуты должны иметь соответствующие типы данных. Например, если элемент <strong><Имя></strong> имеет тип <strong>Имя</strong>, то его значение должно соответствовать ограничениям этого типа.</p><h2 id="opredelenie-chislovyh-tipov">Определение числовых типов</h2><p>В XSD схеме можно определить различные числовые типы, которые позволяют указывать ограничения и правила для значений, которые могут быть представлены в этих типах.</p><p>Следующие числовые типы доступны в XSD:</p><ul><li><strong>xs:decimal</strong>: используется для десятичных чисел. Может быть задано число целых и десятичных разрядов, а также диапазон значений.</li><li><strong>xs:integer</strong>: используется для целых чисел без дробных разрядов.</li><li><strong>xs:long</strong>: используется для целых чисел, диапазон значений которых ограничен между -9223372036854775808 и 9223372036854775807.</li><li><strong>xs:int</strong>: используется для целых чисел, диапазон значений которых ограничен между -2147483648 и 2147483647.</li><li><strong>xs:short</strong>: используется для целых чисел, диапазон значений которых ограничен между -32768 и 32767.</li><li><strong>xs:byte</strong>: используется для целых чисел, диапазон значений которых ограничен между -128 и 127.</li><li><strong>xs:unsignedLong</strong>: используется для положительных целых чисел, диапазон значений которых ограничен между 0 и 18446744073709551615.</li><li><strong>xs:unsignedInt</strong>: используется для положительных целых чисел, диапазон значений которых ограничен между 0 и 4294967295.</li><li><strong>xs:unsignedShort</strong>: используется для положительных целых чисел, диапазон значений которых ограничен между 0 и 65535.</li><li><strong>xs:unsignedByte</strong>: используется для положительных целых чисел, диапазон значений которых ограничен между 0 и 255.</li><li><strong>xs:double</strong>: используется для чисел с плавающей точкой двойной точности.</li><li><strong>xs:float</strong>: используется для чисел с плавающей точкой одинарной точности.</li></ul><p>Для всех числовых типов можно указывать ограничения на значения, используя атрибуты minInclusive, maxInclusive, minExclusive, maxExclusive. Например, можно задать минимальное или максимальное значение числа, а также исключить определенное значение.</p><p>Пример определения числового типа xs:decimal с ограничениями:</p><p><pre></p> <p><code></p> <p><xs:element name="price"></p> <p><xs:simpleType></p> <p><xs:restriction base="xs:decimal"></p> <p><xs:minInclusive value="0"/></p> <p><xs:maxExclusive value="100"/></p> <p></xs:restriction></p> <p></xs:simpleType></p> <p></xs:element></p> <p></code></p> <p></pre></p><p>Этот пример определяет элемент с именем «price» и типом xs:decimal, который может принимать значения от 0 (включительно) до 100 (исключительно).</p><p>При работе с числовыми типами XSD предоставляет широкий спектр возможностей для определения ограничений и правил. Используя их, вы можете создавать более точные и гибкие схемы данных.</p><h2 id="opredelenie-struktury-xml-s-ispolzovaniem">Определение структуры XML с использованием XSD</h2><p>XSD (XML Schema Definition) — это язык, который позволяет определить структуру XML документа. С его помощью можно задать правила для элементов и атрибутов, указать типы данных и определить ограничения на содержимое XML.</p><p>Определение структуры XML с использованием XSD является важным этапом при разработке приложений, работающих с XML данными. XSD схема позволяет описать ожидаемую структуру XML документа и проверить его соответствие этой структуре.</p><p>Основные элементы XSD схемы:</p><ul><li><strong>Элементы:</strong> определяют структуру и тип данных элемента XML.</li><li><strong>Атрибуты:</strong> определяют дополнительные свойства элемента XML.</li><li><strong>Комплексные типы:</strong> описывают группу элементов XML с определенной структурой.</li><li><strong>Простые типы:</strong> определяют простые данные, такие как строки, числа и т.д.</li><li><strong>Ограничения:</strong> определяют правила и ограничения для значений элементов и атрибутов.</li></ul><p>Пример определения структуры XML с использованием XSD:</p><p><pre><code><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"></p> <p><xs:element name="book" type="xs:string" /></p> <p><xs:element name="author" type="xs:string" /></p> <p></xs:schema></code></pre></p><p>В данном примере определена структура XML документа, который должен содержать элементы «book» и «author» типа «строка». Это означает, что каждый элемент должен содержать только текстовое значение.</p><p>XSD схемы могут быть более сложными и содержать большое количество элементов, атрибутов, типов данных и ограничений. Они позволяют точно определить структуру и содержимое XML документа и упростить работу с ними в приложениях.</p><h2 id="vopros-otvet">Вопрос-ответ</h2><h3 id="kakim-obrazom-mozhno-sozdat-xsd-shemu-iz">Каким образом можно создать XSD схему из XML в Java?</h3><blockquote class="question"><p>В Java существует несколько подходов к созданию XSD схемы из XML. Один из самых распространенных способов — использование библиотеки JAXB (Java Architecture for XML Binding). Это стандартная библиотека Java для преобразования объектов Java в XML и XML в объекты Java. Для создания XSD схемы с помощью JAXB необходимо выполнить следующие шаги: 1. Создать объекты Java для представления структуры XML. 2. Определить аннотации JAXB для объектов Java. 3. Создать объект JAXBContext. 4. Создать объект SchemaFactory и использовать его для создания XSD схемы. 5. Записать XSD схему в файл или вывести на экран.</p></blockquote><h3></h3><blockquote class="question"></blockquote><h3></h3><blockquote class="question"></blockquote><div class="fpm_end"></div></div></article><div class="rating-box"><div class="rating-box__header">Оцените статью</div><div class="wp-star-rating js-star-rating star-rating--score-0" data-post-id="30721" data-rating-count="0" data-rating-sum="0" data-rating-value="0"><span class="star-rating-item js-star-rating-item" data-score="1"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="2"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="3"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="4"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="5"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span></div></div><div class="entry-social"><div class="social-buttons"><span class="social-button social-button--vkontakte" data-social="vkontakte" data-image=""></span><span class="social-button social-button--telegram" data-social="telegram"></span><span class="social-button social-button--odnoklassniki" data-social="odnoklassniki"></span><span class="social-button social-button--twitter" data-social="twitter"></span><span class="social-button social-button--sms" data-social="sms"></span><span class="social-button social-button--whatsapp" data-social="whatsapp"></span><span class="social-button social-button--pinterest" data-social="pinterest" data-url="https://uchet-jkh.ru/i/kak-sozdat-xsd-sxemu-iz-xml-na-java/" data-title="Как создать XSD схему из XML на Java" data-description="XML (eXtensible Markup Language) — это распространенный формат обмена данными, который используется для структурирования информации. Он часто применяется в различных приложениях, таких как веб-сервисы, базы данных и многие другие. Однако при работе с XML-документами часто возникает потребность в проверке и валидации их структуры. Для этого широко применяются схемы XSD (XML Schema Definition), которые определяют правила […]" data-image=""></span></div></div><meta itemprop="author" content=""><meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://uchet-jkh.ru/i/kak-sozdat-xsd-sxemu-iz-xml-na-java/" content="Как создать XSD схему из XML на Java"><div itemprop="publisher" itemscope itemtype="https://schema.org/Organization" style="display: none;"><div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="uchet-jkh.ru" data-lazy-src="http://uchet-jkh.ru/i/wp-content/uploads/2024/05/1076337.jpg"><noscript><img itemprop="url image" src="http://uchet-jkh.ru/i/wp-content/uploads/2024/05/1076337.jpg" alt="uchet-jkh.ru"></noscript></div><meta itemprop="name" content="uchet-jkh.ru"><meta itemprop="telephone" content="uchet-jkh.ru"><meta itemprop="address" content="https://uchet-jkh.ru/i"></div></main></div><aside id="secondary" class="widget-area" itemscope itemtype="http://schema.org/WPSideBar"><div class="sticky-sidebar js-sticky-sidebar"><div id="wpshop_widget_articles-2" class="widget widget_wpshop_widget_articles"><div class="widget-header">Интересные записи</div><div class="widget-articles"><article class="post-card post-card--small"><div class="post-card__body"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/rezim-redaktirovaniya-setki-v-blender/">Режим редактирования сетки в Blender</a></div></div></article><article class="post-card post-card--small"><div class="post-card__body"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/rtkauduservice64-exe-cto-eto-takoe-i-zacem-nuzno/">Rtkauduservice64 exe: что это такое и зачем нужно?</a></div></div></article><article class="post-card post-card--small"><div class="post-card__body"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/kak-vyrezat-tekst-na-klaviature-v-word/">Как вырезать текст на клавиатуре в Word</a></div></div></article></div></div><div id="custom_html-2" class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><div id="Q_sidebar"></div></div></div></div></aside><div id="related-posts" class="related-posts fixed"><div class="related-posts__header">Вам также может понравиться</div><div class="post-cards post-cards--vertical"><div class="post-card post-card--related post-card--thumbnail-no"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/yaroslavskii-vokzal-raspisanie-i-stoimost-biletov-na-poezda/">Ярославский вокзал: расписание и стоимость билетов на поезда</a></div><div class="post-card__description">Ярославский вокзал — один из крупнейших и наиболее</div><div class="post-card__meta"><span class="post-card__comments">0</span><span class="post-card__views">0</span></div></div><div class="post-card post-card--related post-card--thumbnail-no"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/yaceika-tablicy-kak-ssylka-html/">Ячейка таблицы как ссылка html</a></div><div class="post-card__description">Веб-страницы часто используют таблицы для представления</div><div class="post-card__meta"><span class="post-card__comments">0</span><span class="post-card__views">0</span></div></div><div class="post-card post-card--related post-card--thumbnail-no"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/cto-slucilos-s-perevodcikom-yandeksa/">Что случилось с переводчиком Яндекса?</a></div><div class="post-card__description">Яндекс.Переводчик — популярный онлайн-сервис</div><div class="post-card__meta"><span class="post-card__comments">0</span><span class="post-card__views">0</span></div></div><div class="post-card post-card--related post-card--thumbnail-no"><div class="post-card__title"><a href="https://uchet-jkh.ru/i/yandeks-praktikum-matematika-kak-voiti-kak-ucenik/">Яндекс практикум — математика: как войти как ученик</a></div><div class="post-card__description">В наше время знание математики становится все более важным.</div><div class="post-card__meta"><span class="post-card__comments">0</span><span class="post-card__views">0</span></div></div></div></div></div></div><div class="site-footer-container "><div class="footer-navigation full" itemscope itemtype="http://schema.org/SiteNavigationElement"><div class="main-navigation-inner fixed"><div class="menu-footer_menu-container"><ul id="footer_menu" class="menu"><li id="menu-item-53" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-53"><a rel="privacy-policy" href="https://uchet-jkh.ru/i/privacy-policy/">Политика конфиденциальности</a></li><li id="menu-item-54" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54"><a href="https://uchet-jkh.ru/i/kontakty/">Обратная связь</a></li><li id="menu-item-55" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55"><a href="https://uchet-jkh.ru/i/soglashenie/">Пользовательское соглашение</a></li></ul></div></div></div><footer id="colophon" class="site-footer site-footer--style-gray full"><div class="site-footer-inner fixed"><div class="footer-bottom"><div class="footer-info"> © 2024 База полезных знаний.</div></div></div></footer></div></div> <script>document.addEventListener("copy", (event) => {var pagelink = "\nИсточник: https://uchet-jkh.ru/i/kak-sozdat-xsd-sxemu-iz-xml-na-java";event.clipboardData.setData("text", document.getSelection() + pagelink);event.preventDefault();});</script><script type="text/javascript" id="reboot-scripts-js-extra">var settings_array = {"rating_text_average":"\u0441\u0440\u0435\u0434\u043d\u0435\u0435","rating_text_from":"\u0438\u0437","lightbox_display":"1","sidebar_fixed":""}; var wps_ajax = {"url":"https:\/\/uchet-jkh.ru\/i\/wp-admin\/admin-ajax.php","nonce":"55b06f7564"};</script> <script>window.lazyLoadOptions = { elements_selector: "img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]", data_src: "lazy-src", data_srcset: "lazy-srcset", data_sizes: "lazy-sizes", class_loading: "lazyloading", class_loaded: "lazyloaded", threshold: 300, callback_loaded: function(element) { if ( element.tagName === "IFRAME" && element.dataset.rocketLazyload == "fitvidscompatible" ) { if (element.classList.contains("lazyloaded") ) { if (typeof window.jQuery != "undefined") { if (jQuery.fn.fitVids) { jQuery(element).parent().fitVids(); } } } } }}; window.addEventListener('LazyLoad::Initialized', function (e) { var lazyLoadInstance = e.detail.instance; if (window.MutationObserver) { var observer = new MutationObserver(function(mutations) { var image_count = 0; var iframe_count = 0; var rocketlazy_count = 0; mutations.forEach(function(mutation) { for (i = 0; i < mutation.addedNodes.length; i++) { if (typeof mutation.addedNodes[i].getElementsByTagName !== 'function') { return; } if (typeof mutation.addedNodes[i].getElementsByClassName !== 'function') { return; } images = mutation.addedNodes[i].getElementsByTagName('img'); is_image = mutation.addedNodes[i].tagName == "IMG"; iframes = mutation.addedNodes[i].getElementsByTagName('iframe'); is_iframe = mutation.addedNodes[i].tagName == "IFRAME"; rocket_lazy = mutation.addedNodes[i].getElementsByClassName('rocket-lazyload'); image_count += images.length; iframe_count += iframes.length; rocketlazy_count += rocket_lazy.length; if(is_image){ image_count += 1; } if(is_iframe){ iframe_count += 1; } } } ); if(image_count > 0 || iframe_count > 0 || rocketlazy_count > 0){ lazyLoadInstance.update(); } } ); var b = document.getElementsByTagName("body")[0]; var config = { childList: true, subtree: true }; observer.observe(b, config); } }, false);</script><script data-no-minify="1" async src="https://uchet-jkh.ru/i/wp-content/plugins/rocket-lazy-load/assets/js/16.1/lazyload.min.js"></script><script>function lazyLoadThumb(e){var t='<img loading="lazy" data-lazy-src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360"><noscript><img src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360"></noscript>',a='<div class="play"></div>';return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="ID?autoplay=1";t+=0===this.dataset.query.length?'':'&'+this.dataset.query;e.setAttribute("src",t.replace("ID",this.dataset.src)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),e.setAttribute("allow", "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),this.parentNode.replaceChild(e,this)}document.addEventListener("DOMContentLoaded",function(){var e,t,a=document.getElementsByClassName("rll-youtube-player");for(t=0;t<a.length;t++)e=document.createElement("div"),e.setAttribute("data-id",a[t].dataset.id),e.setAttribute("data-query", a[t].dataset.query),e.setAttribute("data-src", a[t].dataset.src),e.innerHTML=lazyLoadThumb(a[t].dataset.id),e.onclick=lazyLoadYoutubeIframe,a[t].appendChild(e)});</script> <script defer src="https://uchet-jkh.ru/i/wp-content/cache/autoptimize/js/autoptimize_8719a8fcc817f74da642350c845eb2cd.js"></script></body></html>