Для чего нужны файлы 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.


12

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

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


8

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

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

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

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

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

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

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

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


7

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


5

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


5

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


4

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.