Please visit our sponsors !
            
            XSD Element Substitution
             
             
             
            With XML Schemas one element can substitute another element. 
             
            Element Substitution
            Let's say that we have users from two different countries: England and 
Norway. We would like the possibility to let the user choose whether he or she 
would like to use the Norwegian element names or the English element names in 
the XML document. 
            To solve this problem, we could define a substitutionGroup in the XML 
schema. First, we 
declare a head element and then we declare the other elements which state that 
they are substitutable for the head element. 
            
              
                
                  <xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/> 
                 | 
               
             
            In the example above, the "name" element is the head element and the "navn" 
element is substitutable for "name". 
            Look at this fragment of an XML schema: 
            
              
                
                  <xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/> 
                  <xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>
                  <xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/> 
                 | 
               
             
            A valid XML document (according to the schema above) could look like this: 
            
              
                
                  <customer>
  <name>John Smith</name>
</customer> 
                 | 
               
             
            or like this: 
            
              
                
                  <kunde>
  <navn>John Smith</navn>
</kunde> 
                 | 
               
             
             
             
            Blocking Element Substitution
            To prevent other elements from substituting with a specified element, use the 
block attribute: 
            
              
                
                  <xs:element name="name" type="xs:string" block="substitution"/> 
                 | 
               
             
            Look at this fragment of an XML schema: 
            
              
                
                  <xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/> 
                  <xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>
                  <xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/> 
                 | 
               
             
            A valid XML document (according to the schema above) looks like this: 
            
              
                
                  <customer>
  <name>John Smith</name>
</customer> 
                 | 
               
             
            BUT THIS IS NO LONGER VALID: 
            
              
                
                  <kunde>
  <navn>John Smith</navn>
</kunde> 
                 | 
               
             
             
             
            Using substitutionGroup
            The type of the substitutable elements must be the same as, or derived from, 
the type of the head element. If the type of the substitutable element is the 
same as the type of the head element you will not have to specify the type of 
the substitutable element. 
            Note that all elements in the substitutionGroup (the head element and the 
substitutable elements) must be declared as global elements, otherwise it will 
not work!  
             
            What are Global Elements?
            Global elements are elements that are immediate children of the "schema" 
element! Local elements are elements nested within other elements! 
             
             
             
            
Jump to: Top of Page
or HOME or
             
            Printer friendly page
             
             
            Search W3Schools:
            
             
            What Others Say About Us
            Does the world know about us? Check out these places: 
            
            Dogpile
            Alta Vista
            MSN
            Google
            Excite
            Lycos
            Yahoo
            Ask Jeeves
             
             
            We Help You For Free. You Can Help Us!
            
             
            
W3Schools is for training only. We do not warrant its correctness or its fitness for use.
The risk of using it remains entirely with the user. While using this site, you agree to have read and accepted our
            terms of use and 
            privacy policy. 
            
            Copyright 1999-2002 by Refsnes Data. All Rights Reserved 
             
            
           |