XSD Indicators

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP




<!--
main_leaderboard, all: [728,90][970,90][320,50][468,60]
-->



XSD Indicators



❮ Previous
Next ❯


We can control HOW elements are to be used in documents with indicators.



Indicators


There are seven indicators:


Order indicators:


  • All

  • Choice

  • Sequence

Occurrence indicators:


  • maxOccurs

  • minOccurs

Group indicators:


  • Group name

  • attributeGroup name


Order Indicators


Order indicators are used to define the order of the elements.



All Indicator


The <all> indicator specifies that the child elements can appear in any order, and that
each child element must occur only once:





<xs:element name="person">

 
<xs:complexType>

   
<xs:all>

     
<xs:element name="firstname" type="xs:string"/>

     
<xs:element name="lastname" type="xs:string"/>

   
</xs:all>

 
</xs:complexType>

</xs:element>



Note: When using the <all> indicator you can set the <minOccurs>
indicator to 0 or 1 and the <maxOccurs> indicator can only be set to 1 (the <minOccurs>
and <maxOccurs> are described later).


Choice Indicator


The <choice> indicator specifies that either one child element or another can occur:





<xs:element name="person">

 
<xs:complexType>

   
<xs:choice>

     
<xs:element name="employee" type="employee"/>

     
<xs:element name="member" type="member"/>

   
</xs:choice>

 
</xs:complexType>

</xs:element>



Sequence Indicator


The <sequence> indicator specifies that the child elements must appear in a specific order:





<xs:element name="person">

  
<xs:complexType>

   
<xs:sequence>

     
<xs:element name="firstname" type="xs:string"/>

     
<xs:element name="lastname" type="xs:string"/>

   
</xs:sequence>

 
</xs:complexType>

</xs:element>






<!--
mid_content, all: [300,250][336,280][728,90][970,250][970,90][320,50][468,60]
-->




Occurrence Indicators


Occurrence indicators are used to define how often an element can occur.


Note: For all "Order" and "Group" indicators (any, all, choice, sequence,
group name, and group reference) the default value for maxOccurs and minOccurs is 1.


maxOccurs Indicator


The <maxOccurs> indicator specifies the maximum number of times an element can occur:





<xs:element name="person">

 
<xs:complexType>

   
<xs:sequence>

     
<xs:element name="full_name" type="xs:string"/>

     
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>

   
</xs:sequence>

 
</xs:complexType>

</xs:element>



The example above indicates that the "child_name" element
can occur a minimum of one time (the default value for minOccurs
is 1) and a maximum of ten times in the "person" element.


minOccurs Indicator


The <minOccurs> indicator specifies the minimum number of times an element can occur:





<xs:element name="person">

 
<xs:complexType>

   
<xs:sequence>

     
<xs:element name="full_name" type="xs:string"/>

     
<xs:element name="child_name" type="xs:string"

     
maxOccurs="10" minOccurs="0"/>

   
</xs:sequence>

 
</xs:complexType>

</xs:element>



The example above indicates that the "child_name" element can occur
a minimum of zero times and a maximum of ten times in the "person" element.


Tip: To allow an element to appear an unlimited number of times, use the maxOccurs="unbounded"
statement:



A working example:


An XML file called "Myfamily.xml":





<?xml version="1.0" encoding="UTF-8"?>


<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="family.xsd">


<person>

 
<full_name>Hege Refsnes</full_name>

 
<child_name>Cecilie</child_name>

</person>


<person>

 
<full_name>Tove Refsnes</full_name>

 
<child_name>Hege</child_name>

 
<child_name>Stale</child_name>

 
<child_name>Jim</child_name>

 
<child_name>Borge</child_name>

</person>


<person>

 
<full_name>Stale Refsnes</full_name>

</person>


</persons>



The XML file above contains a root element named "persons". Inside
this root element we have defined three "person" elements. Each "person" element must
contain a "full_name" element and it can contain up to five "child_name" elements.


Here is the schema file "family.xsd":





<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

elementFormDefault="qualified">


<xs:element name="persons">

 
<xs:complexType>

   
<xs:sequence>

     
<xs:element name="person" maxOccurs="unbounded">

       
<xs:complexType>

         
<xs:sequence>

           
<xs:element name="full_name" type="xs:string"/>

           
<xs:element name="child_name" type="xs:string"

           
minOccurs="0" maxOccurs="5"/>

         
</xs:sequence>

       
</xs:complexType>

     
</xs:element>

   
</xs:sequence>

 
</xs:complexType>

</xs:element>


</xs:schema>



Group Indicators


Group indicators are used to define related sets of elements.


Element Groups


Element groups are defined with the group declaration, like this:





<xs:group name="groupname">

...

</xs:group>



You must define an all, choice, or sequence element inside the group
declaration. The following example defines a group named "persongroup", that
defines a group of elements that must occur in an exact sequence:





<xs:group name="persongroup">

 
<xs:sequence>

   
<xs:element name="firstname" type="xs:string"/>

   
<xs:element name="lastname" type="xs:string"/>

   
<xs:element name="birthday" type="xs:date"/>

 
</xs:sequence>

</xs:group>



After you have defined a group, you can reference it in another definition, like this:





<xs:group name="persongroup">

 
<xs:sequence>

   
<xs:element name="firstname" type="xs:string"/>

   
<xs:element name="lastname" type="xs:string"/>

   
<xs:element name="birthday" type="xs:date"/>

 
</xs:sequence>

</xs:group>


<xs:element name="person" type="personinfo"/>


<xs:complexType name="personinfo">

 
<xs:sequence>

   
<xs:group ref="persongroup"/>

   
<xs:element name="country" type="xs:string"/>

 
</xs:sequence>

</xs:complexType>



Attribute Groups


Attribute groups are defined with the attributeGroup declaration, like this:





<xs:attributeGroup name="groupname">

...

</xs:attributeGroup>



The following example defines an attribute group named "personattrgroup":





<xs:attributeGroup name="personattrgroup">

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

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

 
<xs:attribute name="birthday" type="xs:date"/>

</xs:attributeGroup>



After you have defined an attribute group, you can reference it in another definition, like this:





<xs:attributeGroup name="personattrgroup">

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

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

 
<xs:attribute name="birthday" type="xs:date"/>

</xs:attributeGroup>


<xs:element name="person">

 
<xs:complexType>

   
<xs:attributeGroup ref="personattrgroup"/>

 
</xs:complexType>

</xs:element>




❮ Previous
Next ❯

Popular posts from this blog

WWE Night of Champions

Poznań

Kaliningrad