Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

An XSD Example

On 29 września, 2021 by admin

W tym rozdziale pokażemy, jak napisać schemat XML. Dowiesz się również, że schemat może być napisany na różne sposoby.

  • Dokument XML
  • Utwórz schemat XML
  • Divide the Schema
  • Używanie nazwanych typów

Dokument XML

Przyjrzyjrzyjmy się dokumentowi XML o nazwie „shiporder.xml”:

Utwórz schemat XML

Teraz chcemy utworzyć schemat dla powyższego dokumentu XML.

Zaczynamy od otwarcia nowego pliku, który nazwiemy „shiporder.xsd”. Aby utworzyć schemat, moglibyśmy po prostu podążać za strukturą dokumentu XML i definiować każdy element tak, jak go znajdziemy. Zaczniemy od standardowej deklaracji XML, a następnie elementu xs:schema, który definiuje schemat:

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
….
</xs:schema>

W powyższym schemacie używamy standardowej przestrzeni nazw (xs), a URI związanym z tą przestrzenią nazw jest definicja języka Schema, która ma standardową wartość http://www.w3.org/2001/XMLSchema.

Następnie musimy zdefiniować element „shiporder”. Ten element posiada atrybut i zawiera inne elementy, dlatego uważamy go za typ złożony. Elementy potomne elementu „shiporder” są otoczone elementem xs:sequence, który definiuje uporządkowaną sekwencję elementów podrzędnych:

<xs:element name=”shiporder”>
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>

Wtedy musimy zdefiniować element „orderperson” jako typ prosty (ponieważ nie zawiera on żadnych atrybutów ani innych elementów). Typ (xs:string) jest poprzedzony prefiksem przestrzeni nazw związanym z XML Schema, który wskazuje na predefiniowany typ danych schematu:

<xs:element name=”orderperson” type=”xs:string”/>

Następnie musimy zdefiniować dwa elementy, które są typu złożonego: „shipto” oraz „item”. Zaczynamy od zdefiniowania elementu „shipto”:

W schematach możemy określić liczbę możliwych wystąpień elementu za pomocą atrybutów maxOccurs i minOccurs. maxOccurs określa maksymalną liczbę wystąpień elementu, a minOccurs minimalną liczbę wystąpień elementu. Domyślną wartością zarówno dla maxOccurs jak i minOccurs jest 1!

Teraz możemy zdefiniować element „item”. Ten element może pojawić się wiele razy wewnątrz elementu „shiporder”. Jest to określone przez ustawienie atrybutu maxOccurs elementu „item” na „unbounded”, co oznacza, że może istnieć tyle wystąpień elementu „item”, ile autor sobie życzy. Zauważ, że element „note” jest opcjonalny. Określiliśmy to poprzez ustawienie atrybutu minOccurs na zero:

Możemy teraz zadeklarować atrybut elementu „shiporder”. Ponieważ jest to atrybut wymagany, określamy use=”required”.

Uwaga: Deklaracja atrybutu musi być zawsze ostatnia:

<xs:attribute name=”orderid” type=”xs:string” use=”required”/>

Tutaj znajduje się pełna lista pliku schematu o nazwie „shiporder.xsd”:

Divide the Schema

Poprzednia metoda projektowania jest bardzo prosta, ale może być trudna do odczytania i utrzymania, gdy dokumenty są złożone.

Kolejna metoda projektowania polega na zdefiniowaniu najpierw wszystkich elementów i atrybutów, a następnie odwołaniu się do nich za pomocą atrybutu ref.

Oto nowy projekt pliku schematu („shiporder.xsd”):

Używanie nazwanych typów

Trzecia metoda projektowania definiuje klasy lub typy, co pozwala nam na ponowne użycie definicji elementów. Odbywa się to poprzez nadanie nazw elementom simpleTypes i complexTypes, a następnie wskazanie na nie poprzez atrybut type elementu.

Tutaj znajduje się trzeci wzór pliku schematu („shiporder.xsd”):

Element restriction wskazuje, że typ danych pochodzi z przestrzeni nazw W3C XML Schema datatype. Tak więc, następujący fragment oznacza, że wartość elementu lub atrybutu musi być wartością łańcuchową:

<xs:restriction base=”xs:string”>

Element restriction jest częściej używany do stosowania ograniczeń do elementów. Spójrz na następujące linie z powyższego schematu:

<xs:simpleType name=”orderidtype”>
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>

Wskazuje to, że wartość elementu lub atrybutu musi być ciągiem znaków, musi to być dokładnie sześć znaków z rzędu, a znaki te muszą być liczbą z zakresu od 0 do 9.

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress