XSD egenskaper

Alla attribut deklareras som enkla typer.

Vad är ett attribut?

Enkel element kan inte ha attribut. Om ett element har attribut, betraktas det som en komplex typ. Men attributet själv deklareras alltid som en enkel typ.

Hur deklarerar man attribut?

Syntaxen för att definiera attribut är:

<xs:attribute name="xxx" type="yyy"/>

Här hänvisar xxx till attributnamnet, yyy specificerar attributets datatyp. XML Schema har många inbyggda datatyper.

De mest använda typerna är:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

Exempel

Detta är ett XML-element med attribut:

<lastname lang="EN">Smith</lastname>

Detta är motsvarande attributdefinitionen:

<xs:attribute name="lang" type="xs:string"/>

Attributets standardvärde och fixerade värde

Attribut kan ha en specificerad standardvärde eller fixerat värde.

Om inget annat värde specificeras, tilldelas standardvärdet automatiskt till elementet.

I följande exempel är den standardvärdet "EN":

<xs:attribute name="lang" type="xs:string" default="EN"/>

Den fixerade värdet tilldelas också automatiskt till elementet, och du kan inte specificera ett annat värde.

I följande exempel är den fixerade värdet "EN":

<xs:attribute name="lang" type="xs:string" fixed="EN"/>

Valfria och obligatoriska attribut

Som standard är attribut valfria. Om du vill specificera att attributet är obligatoriskt, använd "use"-attributet:

<xs:attribute name="lang" type="xs:string" use="required"/>

Begränsning av innehållet

När XML-elementet eller attributet har ett definierat datatyp, läggs en begränsning till innehållet i elementet eller attributet.

Om XML-elementets typ är "xs:date" och dess innehåll är en sträng som "Hello World", kommer elementet inte att validera.

Genom XML schema kan du också lägga till dina egna begränsningar till dina XML-element och egenskaper. Dessa begränsningar kallas facet (författarens anmärkning: meningen är (polyhederns) yta, som kan översättas till begränsningsyta). Du kommer att lära dig mer om facet i nästa avsnitt.