Hoppa till innehåll

Archives

  • januari 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Inga kategorier
Trend RepositoryArticles and guides
Articles

Ett XSD-exempel

On september 29, 2021 by admin

Detta kapitel visar hur man skriver ett XML-schema. Du kommer också att lära dig att ett schema kan skrivas på olika sätt.

  • Ett XML-dokument
  • Skapa ett XML-schema
  • Dela upp schemat
  • Användning av namngivna typer

Ett XML-dokument

Vi tar en titt på det här XML-dokumentet som heter ”shiporder.xml”:

Skapa ett XML-schema

Nu vill vi skapa ett schema för XML-dokumentet ovan.

Vi börjar med att öppna en ny fil som vi kallar ”shiporder.xsd”. För att skapa schemat kan vi helt enkelt följa strukturen i XML-dokumentet och definiera varje element som vi hittar det. Vi börjar med standard XML-deklarationen följt av xs:schema-elementet som definierar ett schema:

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

I schemat ovan använder vi standardnamnsrymden (xs), och den URI som är kopplad till denna namnrymd är Schema språkdefinitionen, som har standardvärdet http://www.w3.org/2001/XMLSchema.

Nästan måste vi definiera elementet ”shiporder”. Detta element har ett attribut och innehåller andra element, därför betraktar vi det som en komplex typ. Barnelementen till elementet ”shiporder” omges av ett xs:sequence-element som definierar en ordnad sekvens av underelement:

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

Då måste vi definiera elementet ”orderperson” som en enkel typ (eftersom det inte innehåller några attribut eller andra element). Typen (xs:string) är försedd med det namnområdesprefix som är förknippat med XML Schema och som anger en fördefinierad schemadatatyp:

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

Nästan måste vi definiera två element som är av den komplexa typen: ”shipto” och ”item”. Vi börjar med att definiera elementet ”shipto”:

Med scheman kan vi definiera antalet möjliga förekomster för ett element med attributen maxOccurs och minOccurs. maxOccurs anger det maximala antalet förekomster för ett element och minOccurs anger det minimala antalet förekomster för ett element. Standardvärdet för både maxOccurs och minOccurs är 1!

Nu kan vi definiera elementet ”item”. Detta element kan förekomma flera gånger i ett element ”shiporder”. Detta anges genom att attributet maxOccurs för elementet ”item” sätts till ”unbounded”, vilket innebär att elementet ”item” kan förekomma så många gånger som författaren önskar. Observera att elementet ”note” är valfritt. Vi har specificerat detta genom att sätta attributet minOccurs till noll:

Vi kan nu deklarera attributet för elementet ”shiporder”. Eftersom detta är ett obligatoriskt attribut anger vi use=”required”.

Notera: Attributdeklarationerna måste alltid komma sist:

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

Här är den kompletta listningen av schemafilen som heter ”shiporder.xsd”:

Dela upp schemat

Den tidigare designmetoden är mycket enkel, men kan vara svår att läsa och underhålla när dokumenten är komplexa.

Nästa designmetod bygger på att man först definierar alla element och attribut och sedan hänvisar till dem med hjälp av ref-attributet.

Här är den nya designen av schemafilen (”shiporder.xsd”):

Användning av namngivna typer

Den tredje designmetoden definierar klasser eller typer, vilket gör det möjligt för oss att återanvända elementdefinitioner. Detta görs genom att namnge elementen simpleTypes och complexTypes och sedan peka på dem genom elementets attribut type.

Här är den tredje utformningen av schemafilen (”shiporder.xsd”):

Restriction-elementet anger att datatypen härstammar från en W3C XML Schema namespace datatype. Följande fragment innebär alltså att värdet för elementet eller attributet måste vara ett strängvärde:

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

Restriction-elementet används oftare för att tillämpa begränsningar på element. Titta på följande rader från schemat ovan:

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

Detta anger att värdet för elementet eller attributet måste vara en sträng, att det måste bestå av exakt sex tecken i rad och att dessa tecken måste vara ett tal från 0 till 9.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Arkiv

  • januari 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • 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
  • 日本語日本語

Upphovsrätt Trend Repository 2022 | Tema av ThemeinProgress | Drivs med WordPress