Jaki jest cel plików XSD?

90

Skoro możemy zapytać o plik XML z C # (.NET), dlaczego potrzebujemy pliku XSD? Wiem, że jest to plik metadanych konkretnego pliku XML. Możemy określić relacje w XSD, ale jak wtedy działa?

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>

Chcę uzyskać dane z Orderelementów zgodnie z podanym CustomerID.

Ponadto : Jaki jest cel podawania relacji w XSD?

Czerwony łabędź
źródło
stackoverflow.com/questions/2333998/… , można również polecić!
AVA

Odpowiedzi:

106

Pliki XSD służą do sprawdzania, czy pliki XML są zgodne z określonym formatem.

Pod tym względem są podobne do DTD, które istniały przed nimi.

Główną różnicą między XSD i DTD jest to, że XSD jest napisane w XML i jest uważane za łatwiejsze do odczytania i zrozumienia.

Oded
źródło
dzięki, więc czy mogę zapytać o pliki xsd z c3.net używając Linq, aby uzyskać dane z pliku xml? W jaki sposób?
Red Swan
@Lalit - Linq nie ma z tym nic wspólnego.
Oded
Inną ważną różnicą jest to, że nie można łatwo zrobić wielu rzeczy w XSD w DTD.
Mort
Więc do pobierania danych mogę używać tylko pliku xml, prawda? Nie mam potrzeby generowania pliku schematu. (Na razie nie chcę tego sprawdzać) Chcę tylko uzyskać dane XML, które mają różne rekordy zależne od map ID w każdym elemencie.
Red Swan
4
@Lalit - jeśli nie dbasz o relacje jako takie i nie musisz sprawdzać, czy są one zgodne z jakąś regułą (zakodowaną w XSD), nie używaj XSD i po prostu odpytaj bezpośrednio XML.
Oded
48

Bez schematu XML (plik XSD) plik XML jest stosunkowo wolnym zestawem elementów i atrybutów. Plik XSD określa, które elementy i atrybuty są dozwolone oraz w jakiej kolejności.

Ogólnie XML jest metajęzykiem. Pliki XSD definiują określone języki w ramach tego metajęzyka. Na przykład, jeśli plik XSD zawiera definicję XHTML 1.0, to plik XML musi być zgodny z XHTML 1.0, a nie innym formatem.

Oleg
źródło
19

W swoim pytaniu wspominasz o języku C #, więc warto pomyśleć o XSD jako służącym podobnej roli do interfejsu C #.

Definiuje, jak XML powinien „wyglądać” w podobny sposób, w jaki interfejs definiuje, co powinna implementować klasa.

Garry
źródło
4
Jeśli weźmiesz klasę i interfejs, który ma zaimplementować, możesz stwierdzić, czy klasa jest poprawna. W ten sam sposób, jeśli weźmiesz plik xml i jest to xsd, możesz stwierdzić, czy xml jest poprawny.
Garry
16

XSD ograniczają słownictwo i strukturę dokumentów XML.

  • Bez XSD dokument XML musi być zgodny tylko z regułami poprawności podanymi w Rekomendacji XML W3C .
  • W przypadku XSD dokument XML musi przestrzegać dodatkowych ograniczeń nałożonych na nazwy i wartości jego elementów i atrybutów, aby można go było uznać za ważny w odniesieniu do XSD zgodnie z zaleceniem schematu XML W3C .

W XML chodzi o porozumienie , a XSD zapewniają środki do tworzenia struktury i przekazywania porozumienia poza podstawową definicją samego XML.

kjhughes
źródło
12

Pytania również brzmią: Jaki jest cel podania relacji w xsd.

Przypuśćmy, że chcesz wygenerować plik XML dla narzędzia strony zewnętrznej lub podobnego - skąd wiesz, jaką strukturę można zastosować, aby można było prawidłowo używać tego narzędzia? piszesz do schematu. Podobnie, jeśli chcesz, aby inne osoby korzystały z Twojego narzędzia, możesz napisać schemat, według którego będą postępować. Może być również przydatne do walidacji własnego XML.

Robert
źródło
8

Zanim zrozumiem XSD (Definicja schematu XML), pozwól mi wyjaśnić;

Co to jest schemat?

na przykład; emailID: peter # gmail

Możesz stwierdzić, że powyższy identyfikator e-mail jest nieprawidłowy, ponieważ nie ma @, .com, .net lub .org.

Znamy schemat e-mail, który wygląda jak [email protected].

Wniosek: Schemat nie weryfikuje danych, wykonuje walidację struktury.

XSD jest właściwie jedną z implementacji schematu XML. inni mamy

Używamy XSD do walidacji danych XML.

Premraj
źródło
7

XSD to formalna umowa, która określa, w jaki sposób można utworzyć dokument XML. Jest często używany do walidacji dokumentu XML lub do generowania kodu z.

troelskn
źródło
5

Plik XSD jest definicją schematu XML i służy do zapewnienia standardowej metody sprawdzania, czy dany dokument XML jest zgodny z oczekiwaniami.

a'r
źródło
5

Plik xsd nazywany jest schematem XML. Poprzez schemat XML możemy wymagać określonej struktury w danym XML-u - które elementy w jakiej kolejności, ile razy, z jakimi atrybutami, jak są zagnieżdżone itp. Jeśli mamy schemat dla naszego wejścia XML, możemy zweryfikować że zawiera dane, które powinien zawierać, i nic więcej, z kilkoma wierszami wywołującymi walidator schematu.


źródło
4

Plik xsd jest schematem pliku xml - określa, które elementy mogą wystąpić i jakie są ich ograniczenia (np. Ilość, kolejność, granice, relacje, ...)

mort
źródło