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.12. XSD complexType complexContent extension Definities

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.

Naast het uitbreiden met xsd:extension van een complexType als simpleContent, kunnen we ook een complexType als complexContent uitbreiden.

Zo wordt in onderstaand schema type address uitgebreid door fullAddress.  Zo wordt aan de sequence van address nog een country element toegevoegd.
Ook een attribuut foreign wordt in fullAddress aan de (lege) verzameling van attributen van address toegevoegd :
XML Schema Definition
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="address" type="fullAddress"/>
  <xsd:complexType name="fullAddress">
    <xsd:complexContent>
      <xsd:extension base="address">
        <xsd:sequence>
          <xsd:element name="country" type="xsd:string" />
        </xsd:sequence>
        <xsd:attribute name="foreign" type="xsd:boolean" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="address">
    <xsd:sequence>
      <xsd:element name="numberAndStreet" type="xsd:string" />
      <xsd:element name="zipAndCity" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
Conform dit schema is volgend XML document :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<address foreign="true">
  <numberAndStreet>1, Wetstraat</numberAndStreet>
  <zipAndCity>Brussels BE1000</zipAndCity>
  <country>Belgium</country>
</address>
Volgend XML document is niet conform het schema :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<address foreign="true">
  <country>Belgium</country>
  <numberAndStreet>1, Wetstraat</numberAndStreet>
  <zipAndCity>Brussels BE1000</zipAndCity>
</address>
De volgorde van de childelementen voldoet immers niet aan de sequence van fullAddress.

Een complexContent kan enkel een extension zijn van een ander complexType dat ook een complexContent heeft.  En address heeft effectief een complexContent, want bovenstaande definitie voor address zou men ook als volgt kunnen definiëren :
XML Schema Definition
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="address" type="address"/>
  <xsd:complexType name="address">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:element name="numberAndStreet" type="xsd:string" />
          <xsd:element name="zipAndCity" type="xsd:string" />
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
</xsd:schema>
Zoals al eerder aangegeven is in een schema voor een complexType element waar geen content type (simpleContent of complexContent) is opgegeven, dit by default een complexContent met een restriction van xsd:anyType.

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