Чим відрізняється мова розширюваної розмітки (XML) від XML-схеми (XSD)?
Чим відрізняється мова розширюваної розмітки (XML) від XML-схеми (XSD)?
Відповіді:
Насправді XSD - це сам XML. Його мета - перевірити структуру іншого документа XML. XSD не є обов'язковим для будь-якого XML, але він запевняє, що XML може використовуватися для певних цілей. XML містить лише дані у відповідному форматі та структурі.
<?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.
Візьмемо приклад
<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.
.. і багато іншого ...
<root> <A>A</A> <B/> <C/> </root>
якщо вузол <A>
є <A>B</A>
, то зробити <B>
обов'язково, якщо <A>C</A>
потім зробити <C>
обов'язковим.
XSD:
XSD (визначення XML-схеми) визначає, як формально описати елементи в документі розширюваної мови розмітки (XML).
Xml:
XML був розроблений для опису даних . Він не залежить від програмного та апаратного забезпечення.
Це покращує наступні речі.
-Обмін даними.
-Платформа незалежна.
-Збільшення доступності даних.
Відмінності:
XSD заснований і написаний на XML.
XSD визначає елементи та структури, які можуть з’являтися в документі, тоді як XML - ні.
XSD забезпечує правильну інтерпретацію даних, тоді як XML - не.
Документ XSD перевіряється як XML, але навпаки не завжди може бути правдою.
XSD краще вловлювати помилки, ніж XML.
XSD визначає елементи, які можуть бути використані в документах, що стосуються фактичних даних, з якими вони повинні бути закодовані.
наприклад:
Дата, що виражається як 12.12.2010, може означати 12 січня або 1 грудня. Оголошення типу даних про дату в документі XSD гарантує, що воно відповідає формату, продиктованому XSD.
XML - визначає синтаксис з елементів і атрибутів для структурування даних в добре сформований документі.
XSD (він же XML - схеми) , як DTD раніше, повноваження е X розтяжність в XML , дозволяючи користувачеві визначити словниковий запас і граматику з елементів і атрибутів в дійсний XML документа.
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<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.
XML має значно ширше застосування, ніж f.ex. HTML. У ньому немає внутрішньої програми або "програми" за замовчуванням. Отже, хоча вам може не дуже важливо, щоб веб-сторінки також регулювались тим, що дозволено, з боку автора, ви, ймовірно, захочете точно визначити, що може, а може, і не містить XML-документ.
Це як проектування бази даних.
Справа в XML-технологіях полягає в тому, що вони мають текстовий характер. З XSD це означає, що у вас є структура визначення структури даних, яку можна "підключити" до таких інструментів для обробки тексту, як PHP. Таким чином, ви не тільки можете маніпулювати самими даними, але і дуже легко змінювати та документувати структуру та навіть автоматично генерувати лицьові частини.
Таким чином, XSD - це "клей" або "проміжне програмне забезпечення" між даними (XML) та засобами обробки даних.