Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

30.4. XSD Type Definities - Verplichte en Default Waardes

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

30.4.1. Verplichte en Default Waardes voor Attributen

Als het use attribute op "optional" is ingesteld mag je ook een default waarde opgeven.  Deze default waarde, opgegeven via het default attribuut, wordt dan gebruikt indien het attribuut niet is opgenomen in de XML data, bijvoorbeeld :
XML Schema Definition
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element type="article" name="article"/>
  <xsd:complexType name="article">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" />
    </xsd:sequence>
    <xsd:attribute name="price" type="xsd:decimal" default="0.0" />
  </xsd:complexType>
</xsd:schema>
Als dit schema in acht wordt genomen bij het inlezen van volgend XML document :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <name>Hat</name>
</article>
Waar geen price attribuut is opgenomen, dan wordt volgens het schema het artikel verondersteld prijs 0.0 te hebben, net alsof het XML document als volgt was opgesteld :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article price="0.0">
  <name>Hat</name>
</article>
Attribuut use ingesteld op "required" of "prohibited" combineren met attribuut default is onzinnig en foutief.

30.4.2. Verplichte en Default Waardes voor Elementen

Het default attribuut kan ook worden gebruikt in <xsd:element> elementen, let echter op, indien het element optioneel is en niet is opgenomen in de XML data dan wordt, in tegenstelling tot bij <xsd:attribute> elementen, deze default waarde niet gebruikt.  Enkel als dit element leeg is in de XML data zal deze default waarde worden gebruikt.

In volgend schema is ID optioneel is met default waarde 100, price is verplicht met default waarde 0.0 :
XML Schema Definition
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element type="article" name="article"/>
  <xsd:complexType name="article">
    <xsd:sequence>
      <xsd:element name="ID" type="xsd:string" minOccurs="0" default="100" />
      <xsd:element name="name" type="xsd:string" />
      <xsd:element name="price" type="xsd:decimal" default="0.0" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
Als het schema in acht wordt genomen bij het inlezen van volgende XML data, waar geen ID element is opgenomen :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <name>Hat</name>
  <price></price>
</article>
Dan heeft het artikel price 0.0 en geen ID.  Alsof het XML document was :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <name>Hat</name>
  <price>0.0</price>
</article>
Als het schema in acht wordt genomen bij het inlezen van volgende XML data, waar een leeg ID element is opgenomen :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <ID></ID>
  <name>Hat</name>
  <price></price>
</article>
Dan heeft het artikel opnieuw price 0.0 en deze keer ID 100.  Alsof het XML document was :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <ID>100</ID>
  <name>Hat</name>
  <price>0.0</price>
</article>
Uiteraard mag zowel price als ID hier in de XML data ook worden ingesteld :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <ID>101</ID>
  <name>Glasses</name>
  <price>4.99</price>
</article>
Waardoor er geen gebruik wordt gemaakt van de default waardes.

Indien er geen default attribuut is opgenomen, mag men wel het fixed attribuut opnemen.  Deze werkt op dezelfde manier als default maar vereist dat indien er wel een waarde is gespecifieerd voor dit attribuut in de XML data, dat deze correspondeert met de waarde ingesteld in het fixed attribuut.  Dit attribuut kan worden opgenomen in <xsd:element> of <xsd:attribute> elementen en kan zowel zinnig met use="required" als use="optional" worden gecombineerd.

Onderstaand schema laat een category attribuut of childelement toe in een article element.  Beide zijn optioneel, maar moeten hier - indien opgenomen - op waarde "main" zijn ingesteld :
XML Schema Definition
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element type="article" name="article"/>
  <xsd:complexType name="article">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" />
      <xsd:element name="category" type="xsd:string" fixed="main" minOccurs="0" />
    </xsd:sequence>
    <xsd:attribute name="category" type="xsd:string" fixed="main" />
  </xsd:complexType>
</xsd:schema>
Volgende XML documenten zijn conform dit schema :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article category="main">
  <name>Hat</name>
</article>
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <name>Glasses</name>
  <category>main</category>
</article>
Ook conform dit schema is volgend XML document :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <name>Shoes</name>
  <category></category>
</article>
De niet ingevulde category zal hier bij het inlezen van deze XML data, indien het schema in acht wordt genomen, resulteren in de fixed waarde voor dit element.  Dus ook dit artikel hoort tot de hoofdcategorie.

Niet conform dit schema zijn volgende document :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article category="clothes">
  <name>Hat</name>
</article>
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<article>
  <name>Hat</name>
  <category>clothes</category>
</article>

30.4.3. Enkele Combinaties met Multipliciteit

Enkele voorbeelden voor elementen (min = minOccurs, max = maxOccurs, fix = fixed, dft = default en unb = "unbounded") :
min   max fix dft
0     1           element mag éénmaal voorkomen met eender welke waarde
0     unb         element mag meermaal voorkomen met eender welke waarde
1     1           element moet éénmaal voorkomen met eender welke waarde
1     1   100     element moet éénmaal voorkomen met waarde 100
3     unb 200     element moet minstens drie keer voorkomen met waarde 200
0     1   300     element mag éénmaal voorkomen
                  - als het niet voorkomt wordt het element niet voorzien
                  - als het wel voorkomen en leeg is heeft het waarde 300
                  - als het wel voorkomt en een waarde heeft, moet dit 300 zijn
0     1       300 element mag éénmaal voorkomen
                  - als het niet voorkomt wordt het element niet voorzien
                  - als het wel voorkomen en leeg is heeft het waarde 300
                  - als het wel voorkomt mag het eender welke waarde aannemen
Enkele voorbeelden voor attributen (req = required, opt = optional en fix = fixed) :
use   fix dft
opt               attribuut mag voorkomen met eender welke waarde
req               attribuut moet voorkomen met eender welke waarde
req   100         attribuut moet voorkomen met waarde 100
opt   200         attribuut mag voorkomen maar is steeds voorzien met waarde 200
opt       300     attribuut mag voorkomen
                  - als het niet voorkomt is de waarde 300
                  - als het wel voorkomt mag de waarde eender wat zijn

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.