Для чего нужны файлы XSD?

90

Поскольку мы можем запрашивать XML-файл из C # (.NET), зачем нам нужен XSD-файл? Я знаю, что это файл метаданных конкретного XML-файла. Мы можем указать отношения в XSD, но как тогда он функционирует?

XML

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
  <Orders>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>6</EmployeeID>
      <OrderDate>1997-05-06T00:00:00</OrderDate>
      <RequiredDate>1997-05-20T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-05-09T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>3.35</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>8</EmployeeID>
      <OrderDate>1997-07-04T00:00:00</OrderDate>
      <RequiredDate>1997-08-01T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-07-14T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>4.42</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
  </Orders>
</Root>

Я хочу получать данные из Orderэлементов в соответствии с предоставленным CustomerID.

Также : какова цель установления отношений в XSD?

Красный лебедь
источник
stackoverflow.com/questions/2333998/… , также можно указать!
AVA

Ответы:

106

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

В этом отношении они похожи на DTD , существовавшие до них.

Основное различие между XSD и DTD заключается в том, что XSD написан на XML и считается более легким для чтения и понимания.

Одед
источник
спасибо, могу ли я запросить файлы xsd с c3.net с помощью Linq для получения данных из файла xml? Как?
Красный лебедь,
@Lalit - Linq тут ни при чем.
Oded
Еще одно важное отличие состоит в том, что вы не можете легко выполнять множество вещей в XSD в DTD.
Mort
Значит, для получения данных я могу использовать только файл xml? Мне не нужно создавать его файл схемы. (Я не хочу пока проверять это). Я просто хочу получить данные XML, которые имеют различные записи, зависящие от карт идентификаторов в каждом элементе.
Red Swan
4
@Lalit - если вас не интересуют отношения как таковые и вам не нужно проверять, соответствуют ли они какому-то правилу (зашифрованному в XSD), тогда не используйте XSD и просто запрашивайте XML напрямую.
Oded
48

Без схемы XML (файла XSD) файл XML представляет собой относительно свободный набор элементов и атрибутов. Файл XSD определяет, какие элементы и атрибуты разрешены и в каком порядке.

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

Олег
источник
19

Вы упоминаете C # в своем вопросе, поэтому можно подумать, что XSD выполняет ту же роль, что и интерфейс C #.

Он определяет, как должен «выглядеть» XML, аналогично тому, как интерфейс определяет, что должен реализовать класс.

Гарри
источник
4
Если вы возьмете класс и интерфейс, который он должен реализовать, вы сможете определить, правильный ли класс. Таким же образом, если вы возьмете файл xml и это xsd, вы сможете определить, правильный ли xml.
Гарри
16

XSD ограничивают словарный запас и структуру XML-документов.

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

Kjhughes
источник
12

Также вопросы: С какой целью давать отношения в xsd.

Предположим, вы хотите сгенерировать некоторый XML для стороннего инструмента или аналогичного - как вы узнаете, какой структуре разрешено следовать для правильного использования в их инструменте? вы пишете в схему. Точно так же, если вы хотите, чтобы другие люди использовали ваш инструмент, вы должны написать схему, которой они будут следовать. Это также может быть полезно для проверки вашего собственного XML.

Роберт
источник
8

Прежде чем разбираться в XSD (определение схемы XML), позвольте мне объяснить;

Что такое схема?

например; emailID: peter # gmail

Вы можете определить, что указанный выше адрес электронной почты недействителен, потому что не существует @, .com, .net или .org.

Мы знаем схему электронной почты, она выглядит как peter@gmail.com.

Вывод: схема не проверяет данные, а проверяет структуру.

XSD на самом деле является одной из реализаций XML-схемы. другие у нас есть

Мы используем XSD для проверки данных XML.

Премрадж
источник
7

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

Troelskn
источник
5

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

a'r
источник
5

Файл .xsd называется схемой XML. Через схему XML нам может потребоваться определенная структура в данном XML - какие элементы, в каком порядке, сколько раз, с какими атрибутами, как они вложены и т. Д. Если у нас есть схема для нашего ввода XML, мы можем проверить что он содержит данные, которые нам нужны, и ничего больше, с несколькими строками, вызывающими валидатор схемы.


источник
4

Файл xsd представляет собой схему файла xml - он определяет, какие элементы могут встречаться и их ограничения (например, количество, порядок, границы, отношения, ...)

смертный
источник