В чем разница между XML и XSD? - PullRequest
102 голосов
/ 25 февраля 2010

В чем разница между расширяемым языком разметки (XML) и схемой XML (XSD)?

Ответы [ 7 ]

138 голосов
/ 25 февраля 2010

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

106 голосов
/ 26 февраля 2010


Возьмите пример

<root>
  <parent>
     <child_one>Y</child_one>
     <child_two>12</child_two>
  </parent>
</root>

и создайте xsd для этого:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="child_one" type="xs:string" />
              <xs:element name="child_two" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Что невозможно с XSD: хотел бы написать это первым, так как список очень маленький
1) Вы не можете проверить узел / атрибут, используя значение другого узла / атрибута.
2) Это ограничение: Элемент, определенный в файле XSD, должен быть определен только с одним типом данных. [в приведенном выше примере для <child_two>, появляющегося в другом узле <parent>, тип данных не может быть определен, кроме int.
3) Нельзя игнорировать проверку элементов и атрибутов, т. Е. Если элемент / атрибут появляется в XML, он должен быть четко определен в соответствующем XSD. Хотя использование <xsd:any> позволяет, но у него есть свои правила. Пребывание, которое приводит к ошибке проверки. Я пробовал подобный подход, и определенно не увенчался успехом, вот вопросы и ответы


что возможно с XSD:
1) Вы можете проверить правильную иерархию узлов XML. [xsd определяет, какой дочерний элемент должен находиться под каким родителем и т. д., соблюдение которого будет считаться ошибкой, в вышеприведенном примере child_two не может быть непосредственным дочерним элементом для root, но это дочерний элемент тега «parent», который в свою очередь потомок "корневого" узла, есть иерархия ..]
2) Вы можете определить тип данных значений узлов. [в приведенном выше примере child_two не может иметь никаких данных, кроме числа]
3) Вы также можете определить пользовательские data_types, [например, для узла <month>, возможные данные могут быть одним из 12 месяцев .. поэтому вам нужно определить все 12 месяцев в новом типе данных, записав все 12 названий месяцев в качестве значений перечисления .. проверка показывает ошибку, если входной XML содержит любое другое значение, кроме этих 12 значений.]
4) Вы можете наложить ограничение на вхождение элементов, используя minOccurs и maxOccurs, значения по умолчанию 1 и 1.

.. и многие другие ...

14 голосов
/ 21 августа 2015

XSD:
XSD (определение схемы XML) определяет, как формально описать элементы в документе расширяемого языка разметки (XML).
Xml:
XML был разработан для описания данных . Он независим от программного и аппаратного обеспечения.
Усиливает следующие вещи.
-Передача данных.
-Независимый от платформы.
-Повышение доступности данных.

Отличия:

  1. XSD основан и написан на XML.

  2. XSD определяет элементы и структуры, которые могут появляться в документе, а XML - нет.

  3. XSD обеспечивает правильную интерпретацию данных, а XML - нет.

  4. Документ XSD проверяется как XML, но не всегда может быть верно обратное.

  5. XSD лучше распознает ошибки, чем XML.

XSD определяет элементы , которые могут использоваться в документах, относящиеся к фактическим данным, с которыми они должны быть закодированы.
например:
Дата, которая обозначается как 1/12/2010, может означать 12 января или 1 декабря. Объявление типа данных даты в документе XSD гарантирует, что оно соответствует формату, установленному XSD.

6 голосов
/ 21 октября 2015

XML против XSD

XML определяет синтаксис из элементов и атрибутов для структурирования данных в скважине документ.

XSD (он же XML-схема) , как и ранее DTD, обеспечивает растяжимость e X в XML , позволяя пользователю определить словарь и грамматику из элементов и атрибутов в действительные XML документ.

3 голосов
/ 06 декабря 2017

ПРОСТОЙ ПРИМЕР XML:

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XSD ИЗ ВЫШЕ XML:

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Здесь:

сложный тип : обозначает, что он содержит другие элементы. простой тип : обозначает, что они не содержат других элементов.

Тип: строка, десятичный, целое число, логическое значение, Дата, время

Проще говоря, xsd - это еще один способ представления и проверки данных XML с определенным типом. С помощью дополнительных атрибутов мы можем выполнять несколько операций. Выполнение любой задачи на xsd проще, чем на xml.

1 голос
/ 07 сентября 2017

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

XML-файл является экземпляром XSD, поскольку он использует правила, определенные в XSD.

0 голосов
/ 19 июня 2018

XML имеет гораздо более широкое применение, чем f.ex. HTML. У него нет встроенного или стандартного «приложения». Таким образом, хотя вам, возможно, и не важно, что веб-страницы также регулируются тем, что разрешено, со стороны автора вы, вероятно, захотите точно определить, что может и не может содержать XML-документ.

Это похоже на проектирование базы данных.

Суть XML-технологий в том, что они имеют текстовый характер. С XSD это означает, что у вас есть структура определения структуры данных, которую можно «подключить» к таким инструментам обработки текста, как PHP. Таким образом, вы можете не только манипулировать самими данными, но и очень легко изменять и документировать структуру, и даже автоматически генерировать внешние интерфейсы.

С этой точки зрения XSD является «связующим звеном» или «промежуточным ПО» между данными (XML) и инструментами обработки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...