Чим відрізняється XML від XSD?


Відповіді:


145

Насправді XSD - це сам XML. Його мета - перевірити структуру іншого документа XML. XSD не є обов'язковим для будь-якого XML, але він запевняє, що XML може використовуватися для певних цілей. XML містить лише дані у відповідному форматі та структурі.


Просто я зрозумів - якщо третя сторона надіслала мені документ .XSD з подібними ознаками: <xs: element name = "QuoteRequestID" type = "xs: unsignedLong" minOccurs = "0" /> включено - це просто опис полів чи не так. Чи розумно запитати у них фактичний запит вибірки, який би був необробленим XML з <QuoteResultID> і т. Д. Тощо
Джеймс Вілсон

3
Звичайно, ви можете запитати їх. Ви також можете використовувати деякі інструменти в Інтернеті, які можуть зробити це для вас, як, наприклад, xsd2xml . Просто вставте xsd, і він створить зразок xml-документа на його основі.
анхари

@anthares, я спробував посилання на: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema> але в результаті отримав помилку: Error!!! The 'minOccurs' attribute cannot be present.
hereininity

Чому це було б проблемою?
нескінченність

111


Візьмемо приклад

<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 не може бути безпосереднім дочірнім коріннем, але це дитина дочірнього тегу, яка в свою чергу є a дитина «кореневого» вузла, є ієрархія ..]
2) Ви можете визначити тип даних значень вузлів. [у наведеному вище прикладі child_two не може мати жодних інших даних, ніж число]
3) Ви також можете визначити власні_типи даних, [наприклад, для вузла <month>, можливі дані можуть бути одним із 12 місяців .. тому вам потрібно визначити всі 12 місяців у новому типі даних, записуючи всі імена 12 місяців у вигляді значень перерахування ..
4) Ви можете встановити обмеження на наявність елементів, використовуючи minOccurs та maxOccurs, значення за замовчуванням - 1 та 1.

.. і багато іншого ...


1
@ InfantPro'Aravind 'Що ви мали на увазі під «Неможливо перевірити вузол / атрибут, використовуючи значення іншого вузла / атрибута.». Чому хтось хотів би це зробити?
Geek


"Ви не можете перевірити вузол / атрибут, використовуючи значення іншого вузла / атрибута". Що це означає
GrowinMan

@ GrowinMan, Умовна перевірка (не один з батьків-нащадок) Приклад: Якщо це ваш XML: <root> <A>A</A> <B/> <C/> </root>якщо вузол <A>є <A>B</A>, то зробити <B>обов'язково, якщо <A>C</A>потім зробити <C>обов'язковим.
InfantPro'Aravind '

Вищевикладеної вимоги неможливо досягти лише за допомогою XSD
InfantPro'Aravind '

15

XSD:
XSD (визначення XML-схеми) визначає, як формально описати елементи в документі розширюваної мови розмітки (XML).
Xml:
XML був розроблений для опису даних . Він не залежить від програмного та апаратного забезпечення.
Це покращує наступні речі.
-Обмін даними.
-Платформа незалежна.
-Збільшення доступності даних.

Відмінності:

  1. XSD заснований і написаний на XML.

  2. XSD визначає елементи та структури, які можуть з’являтися в документі, тоді як XML - ні.

  3. XSD забезпечує правильну інтерпретацію даних, тоді як XML - не.

  4. Документ XSD перевіряється як XML, але навпаки не завжди може бути правдою.

  5. XSD краще вловлювати помилки, ніж XML.

XSD визначає елементи, які можуть бути використані в документах, що стосуються фактичних даних, з якими вони повинні бути закодовані.
наприклад:
Дата, що виражається як 12.12.2010, може означати 12 січня або 1 грудня. Оголошення типу даних про дату в документі XSD гарантує, що воно відповідає формату, продиктованому XSD.


Перше твердження описувало все.
Ojonugwa Jude Ochalifu

6

XML проти XSD

XML - визначає синтаксис з елементів і атрибутів для структурування даних в добре сформований документі.

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


6

ПРОСТИЙ ПРИКЛАД 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>

Тут:

xs: element : визначає елемент.

xs: послідовність : Позначає дочірні елементи, які відображаються лише у вказаному порядку.

xs: complexType : Позначає, що містить інші елементи.

xs: simpleType : Позначає, що вони не містять інших елементів.

тип: рядок, десятковий, цілий, булевий, дата, час,

  • Простими словами , xsd - це ще один спосіб представлення та перевірки даних XML конкретного типу.
  • За допомогою додаткових атрибутів ми можемо виконувати кілька операцій.

  • Виконувати будь-яке завдання на xsd простіше, ніж xml.


Привіт! Яку програму я використовую для створення файлу XSD?
Джудіт

Програма @Judith? чи можете ви пояснити своє запитання. наприклад редактор чи мова чи інструмент?
shubham1js

1

Фактично, XSD-файл визначає, як виглядатиме файл XML. Це файл схеми який визначає структуру файлу XML. Таким чином, він визначає, які можливі поля та якого розміру вони будуть.

XML-файл - це екземпляр XSD, оскільки він використовує правила, визначені в XSD.


0

XML має значно ширше застосування, ніж f.ex. HTML. У ньому немає внутрішньої програми або "програми" за замовчуванням. Отже, хоча вам може не дуже важливо, щоб веб-сторінки також регулювались тим, що дозволено, з боку автора, ви, ймовірно, захочете точно визначити, що може, а може, і не містить XML-документ.

Це як проектування бази даних.

Справа в XML-технологіях полягає в тому, що вони мають текстовий характер. З XSD це означає, що у вас є структура визначення структури даних, яку можна "підключити" до таких інструментів для обробки тексту, як PHP. Таким чином, ви не тільки можете маніпулювати самими даними, але і дуже легко змінювати та документувати структуру та навіть автоматично генерувати лицьові частини.

Таким чином, XSD - це "клей" або "проміжне програмне забезпечення" між даними (XML) та засобами обробки даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.