Skip to content

Archives

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Ingen kategorier
Trend RepositoryArticles and guides
Articles

Et XSD-eksempel

On september 29, 2021 by admin

Dette kapitel viser, hvordan man skriver et XML-skema. Du vil også lære, at et skema kan skrives på forskellige måder.

  • Et XML-dokument
  • Opret et XML-skema
  • Divide the Schema
  • Anvendelse af navngivne typer

Et XML-dokument

Lad os tage et kig på dette XML-dokument kaldet “shiporder.xml”:

Opret et XML-skema

Nu vil vi gerne oprette et skema til ovenstående XML-dokument.

Vi starter med at åbne en ny fil, som vi kalder “shiporder.xsd”. For at oprette skemaet kunne vi blot følge strukturen i XML-dokumentet og definere hvert element, som vi finder det. Vi starter med standard XML-deklarationen efterfulgt af xs:schema-elementet, der definerer et skema:

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

I skemaet ovenfor bruger vi standardnavneområdet (xs), og den URI, der er tilknyttet dette navneområde, er definitionen af skemasproget, som har standardværdien http://www.w3.org/2001/XMLSchema.

Næst skal vi definere “shiporder”-elementet. Dette element har en attribut, og det indeholder andre elementer, og derfor betragter vi det som en kompleks type. Underelementerne til “shiporder”-elementet er omgivet af et xs:sequence-element, der definerer en ordnet rækkefølge af underelementer:

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

Så er vi nødt til at definere elementet “orderperson” som en simpel type (fordi det ikke indeholder nogen attributter eller andre elementer). Typen (xs:string) er forsynet med det namespace-præfiks, der er forbundet med XML Schema, som angiver en foruddefineret skemadatatype:

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

Næst skal vi definere to elementer, der er af den komplekse type: “shipto” og “item”. Vi starter med at definere elementet “shipto”:

Med skemaer kan vi definere antallet af mulige forekomster for et element med maxOccurs- og minOccurs-attributterne. maxOccurs angiver det maksimale antal forekomster for et element, og minOccurs angiver det minimale antal forekomster for et element. Standardværdien for både maxOccurs og minOccurs er 1!

Nu kan vi definere elementet “item”. Dette element kan optræde flere gange inde i et “shiporder”-element. Dette specificeres ved at sætte maxOccurs-attributten for “item”-elementet til “unbounded”, hvilket betyder, at der kan være så mange forekomster af “item”-elementet, som forfatteren ønsker. Bemærk, at “note”-elementet er valgfrit. Vi har specificeret dette ved at sætte minOccurs-attributten til nul:

Vi kan nu erklære attributten for “shiporder”-elementet. Da det er en obligatorisk attribut, angiver vi use=”required”.

Bemærk: Attributdeklarationerne skal altid komme til sidst:

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

Her er den komplette liste over skemafilen med navnet “shiporder”.xsd”:

Divide the Schema

Den tidligere designmetode er meget enkel, men kan være vanskelig at læse og vedligeholde, når dokumenterne er komplekse.

Den næste designmetode er baseret på først at definere alle elementer og attributter og derefter henvise til dem ved hjælp af ref-attributten.

Her er det nye design af skemafilen (“shiporder.xsd”):

Anvendelse af navngivne typer

Den tredje designmetode definerer klasser eller typer, som gør det muligt at genbruge elementdefinitioner. Dette gøres ved at navngive elementerne simpleTypes og complexTypes og derefter pege på dem via elementets type-attribut.

Her er det tredje design af skemafilen (“shiporder.xsd”):

Restriction-elementet angiver, at datatypen er afledt af en W3C XML Schema namespace datatype. Så følgende fragment betyder, at værdien af elementet eller attributten skal være en strengværdi:

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

Restriction-elementet bruges oftere til at anvende begrænsninger på elementer. Se på følgende linjer fra skemaet ovenfor:

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

Dette angiver, at værdien af elementet eller attributten skal være en streng, den skal bestå af præcis seks tegn i en række, og disse tegn skal være et tal fra 0 til 9.

Skriv et svar Annuller svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Arkiver

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Log ind
  • Indlægsfeed
  • Kommentarfeed
  • 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