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.15. Nil Values

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.

Indien het zo kan zijn dat aan een employee een id is gekoppeld of niet, en dus bijgevolg beide van volgende XML instanties geldig zijn :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<ms:employee xmlns:ms="mySchema">
  <id>123</id>
  <name>John</name>
</ms:employee>
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<ms:employee xmlns:ms="mySchema">
  <name>John</name>
</ms:employee>
Dan zouden we in het schema dat deze XML instanties moet valideren het voorkomen van het element id optioneel te maken (minOccurs="0") :
XML Schema Definition
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="mySchema">
  <xsd:element name="employee">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="id" type="xsd:integer" minOccurs="0"/>
        <xsd:element name="name" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
Het niet voorkomen van het id element zou echter ook een fout kunnen zijn van de actor in het samenstellen van de XML instantie.  Misschien is de mens of het systeem die deze XML informatie heeft samengesteld het id element gewoon vergeten.

Om expliciet aan te geven in een schema dat een element zonder waarde kan voorkomen, kan men ook het nillable attribuut op true instellen :
XML Schema Definition
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="mySchema">
  <xsd:element name="employee">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="id" type="xsd:integer" nillable="true"/>
        <xsd:element name="name" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
Bemerk hoe het minOccurs attribuut hier niet meer aanwezig is en dus niet meer is ingesteld op 0, maar op 1, dit is immers de default waarde van het minOccurs attribuut.

De aanwezigheid van het id element is nu met andere woorden verplicht, maar gezien nillable op true is ingesteld kan men nu wel expliciet aangeven in de XML instantie dat hiervoor geen waarde wordt opgegeven :
XML Instantie
<?xml version="1.0" encoding="utf-8" ?>
<ms:employee xmlns:ms="mySchema"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <id xsi:nil="true" />
  <name>John</name>
</ms:employee>
Het attribuut nil van het id element wordt hiervoor ingesteld op true.
Het nil attribuut is gedefinieerd in de namespace http://www.w3.org/2001/XMLSchema-instance, waar hier in het schema de prefix xsi aan is gekoppeld, dus xsi:nil om duidelijk te maken dat dit attribuut uit deze namespace afkomstig is.  Net als we ms:employee gebruiken om aan te geven dat het employee element uit de namespace mySchema afkomstig is.

De nil waarde is enkel van toepassing op elementwaardes en niet op attribuutwaardes.  Een element kan dus naast een nil waarde wel nog perfect attribuutwaardes bevatten.

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