Appendix 3: Examples

This appendix contains the following examples:


Example 1: Storage of Whole Instance; Full Text Indexing for Selected Nodes

Specifying a tsd:index element with a tsd:text child element correctly stores the whole XML instance and performs full text indexing on the terminal nodes.

The definition of an index takes place in lines 0840-1130 for the elements "surname" and "firstname", and in lines 1300-1600 for the elements street and city, respectively.

The hospital schema is as follows:

Note:
Line numbers were added only to facilitate readability and reference.

0010 <?xml version = "1.0" encoding = "UTF-8"?>
0020 <xs:schema
 xmlns:xs = "http://www.w3.org/2001/XMLSchema"
 xmlns:tsd = "http://namespaces.softwareag.com/tamino/TaminoSchemaDefinition">
0030   <xs:annotation>
0040     <xs:documentation>
0050     </xs:documentation>
0060     <xs:appinfo>
0070       <tsd:schemaInfo name = "patient"></tsd:schemaInfo>
0080     </xs:appinfo>
0090   </xs:annotation>
0100   <xs:element name = "patient">
0110     <xs:annotation>
0120       <xs:documentation> Elements </xs:documentation>
0130     </xs:annotation>
0140     <xs:complexType>
0150       <xs:sequence>
0160         <xs:element ref = "name" minOccurs="0"></xs:element>
0170         <xs:element ref = "sex"></xs:element>
0180         <xs:element ref = "born" minOccurs="0"></xs:element>
0190         <xs:element ref = "address" minOccurs="0"></xs:element>
0200         <xs:element ref = "occupation" minOccurs="0"></xs:element>
0210         <xs:element ref = "insurance" minOccurs="0"></xs:element>
0220         <xs:element ref = "nextofkin" minOccurs="0"></xs:element>
0230         <xs:element ref = "submitted"></xs:element>
0240         <xs:element ref = "examination" minOccurs="0" maxOccurs="unbounded"/>
0250         <xs:element ref = "therapy" minOccurs="0"></xs:element>
0260         <xs:element ref = "result" minOccurs="0"></xs:element>
0270         <xs:element ref = "remarks" minOccurs="0" maxOccurs="unbounded"/>
0280       </xs:sequence>
0290       <xs:attribute name = "id" type = "xs:ID">
0300         <xs:annotation>
0310           <xs:documentation> Attributes </xs:documentation>
0320         </xs:annotation>
0330       </xs:attribute>
0340     </xs:complexType>
0350   </xs:element>
0360   <xs:element name = "submitted">
0370     <xs:complexType>
0380       <xs:sequence>
0390         <xs:element ref = "date"></xs:element>
0400         <xs:element ref = "symptoms"></xs:element>
0410         <xs:element ref = "diagnosis" maxOccurs="unbounded"/>
0420         <xs:element ref = "doctor" maxOccurs="unbounded"/>
0430       </xs:sequence>
0440     </xs:complexType>
0450   </xs:element>
0460   <xs:element name = "examination">
0470     <xs:complexType>
0480       <xs:sequence>
0490         <xs:element ref = "date"></xs:element>
0500         <xs:element ref = "report" minOccurs="0" maxOccurs="unbounded"/>
0510         <xs:element ref = "remarks" minOccurs="0" maxOccurs="unbounded"/>
0520       </xs:sequence>
0530     </xs:complexType>
0540   </xs:element>
0550   <xs:element name = "therapy">
0560     <xs:complexType>
0570       <xs:choice maxOccurs="unbounded">
0580         <xs:element ref = "medication"></xs:element>
0590         <xs:element ref = "physical"></xs:element>
0600         <xs:element ref = "other"></xs:element>
0610       </xs:choice>
0620     </xs:complexType>
0630   </xs:element>
0640   <xs:element name = "result">
0650     <xs:complexType>
0660       <xs:choice maxOccurs="unbounded">
0670         <xs:element ref = "dismissed"></xs:element>
0680         <xs:element ref = "transferred"></xs:element>
0690         <xs:element ref = "deceased"></xs:element>
0700       </xs:choice>
0710     </xs:complexType>
0720   </xs:element>
0730   <xs:element name = "remarks" type = "xs:string"></xs:element>
0740   <xs:element name = "name">
0750     <xs:complexType>
0760       <xs:sequence>
0770         <xs:element ref = "surname"></xs:element>
0780         <xs:element ref = "firstname"></xs:element>
0790         <xs:element ref = "middlename" minOccurs="0"></xs:element>
0800         <xs:element ref = "title" minOccurs="0"></xs:element>
0810       </xs:sequence>
0820     </xs:complexType>
0830   </xs:element>
0840   <xs:element name = "surname" type = "xs:string">
0850     <xs:annotation>
0860       <xs:appinfo>
0870         <tsd:elementInfo>
0880           <tsd:physical>
0890             <tsd:native>
0900               <tsd:index>
0910                 <tsd:text></tsd:text>
0920               </tsd:index>
0930             </tsd:native>
0940           </tsd:physical>
0950         </tsd:elementInfo>
0960       </xs:appinfo>
0970     </xs:annotation>
0980   </xs:element>
0990   <xs:element name = "firstname" type = "xs:string">
1000     <xs:annotation>
1010       <xs:appinfo>
1020         <tsd:elementInfo>
1030           <tsd:physical>
1040             <tsd:native>
1050               <tsd:index>
1060                 <tsd:text></tsd:text>
1070               </tsd:index>
1080             </tsd:native>
1090           </tsd:physical>
1100         </tsd:elementInfo>
1110       </xs:appinfo>
1120     </xs:annotation>
1130   </xs:element>
1140   <xs:element name = "middlename" type = "xs:string"></xs:element>
1150   <xs:element name = "title" type = "xs:string"></xs:element>
1160   <xs:element name = "sex" type = "xs:string"></xs:element>
1170   <xs:element name = "born" type = "xs:string"></xs:element>
1180   <xs:element name = "address">
1190     <xs:complexType>
1200       <xs:sequence>
1210         <xs:element ref = "street" minOccurs="0"></xs:element>
1220         <xs:element ref = "housenumber" minOccurs="0"></xs:element>
1230         <xs:element ref = "city" minOccurs="0"></xs:element>
1240         <xs:element ref = "postcode" minOccurs="0"></xs:element>
1250         <xs:element ref = "country" minOccurs="0"></xs:element>
1260         <xs:element ref = "phone" minOccurs="0" maxOccurs="unbounded"/>
1270       </xs:sequence>
1280     </xs:complexType>
1290   </xs:element>
1300   <xs:element name = "street" type = "xs:string">
1310     <xs:annotation>
1320       <xs:appinfo>
1330         <tsd:elementInfo>
1340           <tsd:physical>
1350             <tsd:native>
1360               <tsd:index>
1370                 <tsd:text></tsd:text>
1380               </tsd:index>
1390             </tsd:native>
1400           </tsd:physical>
1410         </tsd:elementInfo>
1420       </xs:appinfo>
1430     </xs:annotation>
1440   </xs:element>
1450   <xs:element name = "housenumber" type = "xs:string"></xs:element>
1460   <xs:element name = "city" type = "xs:string">
1470     <xs:annotation>
1480       <xs:appinfo>
1490         <tsd:elementInfo>
1500           <tsd:physical>
1510             <tsd:native>
1520               <tsd:index>
1530                 <tsd:text></tsd:text>
1540               </tsd:index>
1550             </tsd:native>
1560           </tsd:physical>
1570         </tsd:elementInfo>
1580       </xs:appinfo>
1590     </xs:annotation>
1600   </xs:element>
1610   <xs:element name = "postcode" type = "xs:string"></xs:element>
1620   <xs:element name = "country" type = "xs:string"></xs:element>
1630   <xs:element name = "occupation" type = "xs:string"></xs:element>
1640   <xs:element name = "insurance">
1650     <xs:complexType>
1660       <xs:sequence>
1670         <xs:element ref = "company"></xs:element>
1680         <xs:element ref = "policynumber" minOccurs="0"></xs:element>
1690       </xs:sequence>
1700     </xs:complexType>
1710   </xs:element>
1720   <xs:element name = "company" type = "xs:string"></xs:element>
1730   <xs:element name = "policynumber" type = "xs:string"></xs:element>
1740   <xs:element name = "nextofkin">
1750     <xs:complexType>
1760       <xs:sequence>
1770         <xs:element ref = "name"></xs:element>
1780         <xs:element ref = "address" minOccurs="0"></xs:element>
1790         <xs:element ref = "phone" minOccurs="0" maxOccurs="unbounded"/>
1800         <xs:element ref = "fax" minOccurs="0"></xs:element>
1810       </xs:sequence>
1820       <xs:attribute name = "grade" type = "xs:string" use = "required"/>
1830     </xs:complexType>
1840   </xs:element>
1850   <xs:element name = "phone" type = "xs:string"></xs:element>
1860   <xs:element name = "fax" type = "xs:string"></xs:element>
1870   <xs:element name = "date" type = "xs:string"></xs:element>
1880   <xs:element name = "report">
1890     <xs:complexType>
1900       <xs:attribute name = "files" type = "xs:ENTITIES" use = "required"/>
1910     </xs:complexType>
1920   </xs:element>
1930   <xs:element name = "symptoms" type = "xs:string"></xs:element>
1940   <xs:element name = "diagnosis" type = "xs:string"></xs:element>
1950   <xs:element name = "doctor">
1960     <xs:complexType>
1970       <xs:sequence>
1980         <xs:element ref = "name"></xs:element>
1990       </xs:sequence>
2000       <xs:attribute name = "pager" type = "xs:string"></xs:attribute>
2010     </xs:complexType>
2020   </xs:element>
2030   <xs:element name = "medication">
2040     <xs:complexType>
2050       <xs:sequence maxOccurs="unbounded">
2060         <xs:element ref = "type"></xs:element>
2070         <xs:element ref = "dosage"></xs:element>
2080       </xs:sequence>
2090     </xs:complexType>
2100   </xs:element>
2110   <xs:element name = "type">
2120     <xs:complexType>
2130       <xs:simpleContent>
2140         <xs:extension base = "xs:string">
2150           <xs:attribute name = "form" use = "required">
2160             <xs:simpleType>
2170               <xs:restriction base = "xs:NMTOKEN">
2180                 <xs:enumeration value = "tablet"></xs:enumeration>
2190                 <xs:enumeration value = "capsule"></xs:enumeration>
2200                 <xs:enumeration value = "drops"></xs:enumeration>
2210                 <xs:enumeration value = "intravenous"></xs:enumeration>
2220               </xs:restriction>
2230             </xs:simpleType>
2240           </xs:attribute>
2250           <xs:attribute name = "brand" type = "xs:string"></xs:attribute>
2260         </xs:extension>
2270       </xs:simpleContent>
2280     </xs:complexType>
2290   </xs:element>
2300   <xs:element name = "dosage" type = "xs:string"></xs:element>
2310   <xs:element name = "physical">
2320     <xs:complexType>
2330       <xs:sequence>
2340         <xs:element ref = "description"></xs:element>
2350         <xs:element ref = "frequency" minOccurs="0"></xs:element>
2360       </xs:sequence>
2370     </xs:complexType>
2380   </xs:element>
2390   <xs:element name = "description" type = "xs:string"></xs:element>
2400   <xs:element name = "frequency" type = "xs:string"></xs:element>
2410   <xs:element name = "other">
2420     <xs:complexType>
2430       <xs:sequence>
2440         <xs:element ref = "description"></xs:element>
2450         <xs:element ref = "amount" minOccurs="0"></xs:element>
2460       </xs:sequence>
2470     </xs:complexType>
2480   </xs:element>
2490   <xs:element name = "amount" type = "xs:string"></xs:element>
2500   <xs:element name = "dismissed">
2510     <xs:complexType>
2520       <xs:sequence>
2530         <xs:element ref = "date"></xs:element>
2540         <xs:element ref = "doctor" minOccurs="0"></xs:element>
2550       </xs:sequence>
2560     </xs:complexType>
2570   </xs:element>
2580   <xs:element name = "transferred">
2590     <xs:complexType>
2600       <xs:sequence>
2610         <xs:element ref = "date"></xs:element>
2620         <xs:element ref = "destination"></xs:element>
2630         <xs:element ref = "doctor" minOccurs="0"></xs:element>
2640       </xs:sequence>
2650     </xs:complexType>
2660   </xs:element>
2670   <xs:element name = "destination" type = "xs:string"></xs:element>
2680   <xs:element name = "deceased">
2690     <xs:complexType>
2700       <xs:sequence>
2710         <xs:element ref = "date"></xs:element>
2720         <xs:element ref = "doctor" minOccurs="0"></xs:element>
2730       </xs:sequence>
2740     </xs:complexType>
2750   </xs:element>
2760 </xs:schema>

graphics/patient4.gif

Assuming the collection name is "hospital", this makes specific queries based on the content of the terminal nodes most efficient, for example:

....../patient/name[surname~="A*"]

which returns all name elements that contain surname elements that start with "A". Compare this expression with:

....../patient[name/surname~="A*"]

which returns all patient elements that contain a name element containing surname elements that start with "A".

Example 2: Hospital

This example comprises a whole XML schema that models patient data in a hospital application.

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
           xmlns:tsd = "http://namespaces.softwareag.com/tamino/TaminoSchemaDefinition">
  <xs:element name = "patient">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "name" minOccurs="0"></xs:element>
        <xs:element ref = "sex"></xs:element>
        <xs:element ref = "born" minOccurs="0"></xs:element>
        <xs:element ref = "address" minOccurs="0"></xs:element>
        <xs:element ref = "occupation" minOccurs="0"></xs:element>
        <xs:element ref = "insurance" minOccurs="0"></xs:element>
        <xs:element ref = "nextofkin" minOccurs="0"></xs:element>
        <xs:element ref = "submitted"></xs:element>
        <xs:element ref = "examination" minOccurs="0" maxOccurs="unbounded"></xs:element>
        <xs:element ref = "therapy" minOccurs="0"></xs:element>
        <xs:element ref = "result" minOccurs="0"></xs:element>
        <xs:element ref = "remarks" minOccurs="0" maxOccurs="unbounded"></xs:element>
      </xs:sequence>
      <xs:attribute name = "ID" type = "xs:string"></xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name = "submitted">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "date"></xs:element>
        <xs:element ref = "symptoms"></xs:element>
        <xs:element ref = "diagnosis" maxOccurs="unbounded"></xs:element>
        <xs:element ref = "doctor" maxOccurs="unbounded"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "examination">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "date"></xs:element>
        <xs:element ref = "report" minOccurs="0" maxOccurs="unbounded"></xs:element>
        <xs:element ref = "remarks" minOccurs="0" maxOccurs="unbounded"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "therapy">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref = "medication"></xs:element>
        <xs:element ref = "physical"></xs:element>
        <xs:element ref = "other"></xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name = "result">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref = "discharged"></xs:element>
        <xs:element ref = "transferred"></xs:element>
        <xs:element ref = "deceased"></xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name = "remarks" type = "xs:string"></xs:element>
  <xs:element name = "name">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "surname"></xs:element>
        <xs:element ref = "firstname"></xs:element>
        <xs:element ref = "middlename" minOccurs="0"></xs:element>
        <xs:element ref = "title" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "surname" type = "xs:string"></xs:element>
  <xs:element name = "firstname" type = "xs:string"></xs:element>
  <xs:element name = "middlename" type = "xs:string"></xs:element>
  <xs:element name = "title" type = "xs:string"></xs:element>
  <xs:element name = "sex" type = "xs:string"></xs:element>
  <xs:element name = "born" type = "xs:string"></xs:element>
  <xs:element name = "address">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "street" minOccurs="0"></xs:element>
        <xs:element ref = "housenumber" minOccurs="0"></xs:element>
        <xs:element ref = "city" minOccurs="0"></xs:element>
        <xs:element ref = "postcode" minOccurs="0"></xs:element>
        <xs:element ref = "country" minOccurs="0"></xs:element>
        <xs:element ref = "phone" minOccurs="0" maxOccurs="unbounded"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "street" type = "xs:string"></xs:element>
  <xs:element name = "housenumber" type = "xs:string"></xs:element>
  <xs:element name = "city" type = "xs:string"></xs:element>
  <xs:element name = "postcode" type = "xs:string"></xs:element>
  <xs:element name = "country" type = "xs:string"></xs:element>
  <xs:element name = "occupation" type = "xs:string"></xs:element>
  <xs:element name = "insurance">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "company"></xs:element>
        <xs:element ref = "policynumber" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "company" type = "xs:string"></xs:element>
  <xs:element name = "policynumber" type = "xs:string"></xs:element>
  <xs:element name = "nextofkin">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "name"></xs:element>
        <xs:element ref = "address" minOccurs="0"></xs:element>
        <xs:element ref = "phone" minOccurs="0" maxOccurs="unbounded"></xs:element>
        <xs:element ref = "fax" minOccurs="0"></xs:element>
      </xs:sequence>
      <xs:attribute name = "grade" type = "xs:string"></xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name = "phone" type = "xs:string"></xs:element>
  <xs:element name = "fax" type = "xs:string"></xs:element>
  <xs:element name = "date" type = "xs:string"></xs:element>
  <xs:element name = "report">
    <xs:complexType>
      <xs:attribute name = "files" type = "xs:string" use = "required"></xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name = "symptoms" type = "xs:string"></xs:element>
  <xs:element name = "diagnosis" type = "xs:string"></xs:element>
  <xs:element name = "doctor">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "name"></xs:element>
      </xs:sequence>
      <xs:attribute name = "doctor" type = "xs:string"></xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name = "medication">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref = "type"></xs:element>
        <xs:element ref = "dosage"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "type">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base = "xs:string">
          <xs:attribute name = "form" type = "xs:string" use = "required"></xs:attribute>
          <xs:attribute name = "brand" type = "xs:string"></xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name = "dosage" type = "xs:string"></xs:element>
  <xs:element name = "physical">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "description"></xs:element>
        <xs:element ref = "frequency" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "description" type = "xs:string"></xs:element>
  <xs:element name = "frequency" type = "xs:string"></xs:element>
  <xs:element name = "other">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "description"></xs:element>
        <xs:element ref = "amount" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "amount" type = "xs:string"></xs:element>
  <xs:element name = "discharged">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "date"></xs:element>
        <xs:element ref = "doctor" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "transferred">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "date"></xs:element>
        <xs:element ref = "destination"></xs:element>
        <xs:element ref = "doctor" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name = "destination" type = "xs:string"></xs:element>
  <xs:element name = "deceased">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref = "date"></xs:element>
        <xs:element ref = "doctor" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Example 3: Telephone

This is a complete XML schema according to the telephone example used at some places elsewhere in this documentation:

<?xml version = "1.0" encoding = "euc-kr"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
           xmlns:tsd = "http://namespaces.softwareag.com/tamino/TaminoSchemaDefinition">
  <xs:annotation>
    <xs:appinfo>
      <tsd:schemaInfo name = "Telephone">
        <tsd:collection name = "Sample"></tsd:collection>
        <tsd:doctype name = "Telephone">
          <tsd:logical>
            <tsd:content>closed</tsd:content>
          </tsd:logical>
        </tsd:doctype>
      </tsd:schemaInfo>
    </xs:appinfo>
  </xs:annotation>
  <xs:element name = "Telephone">
    <xs:complexType>
      <xs:sequence>
        <xs:element name = "LoginName" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "PassWord" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Lastname" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:text></tsd:text>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Firstname" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>

                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Date_of_Birth" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Company_Name" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Salutation" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Email" type = "xs:string">
          <xs:annotation>
            <xs:appinfo>
              <tsd:elementInfo>
                <tsd:physical>
                  <tsd:native>
                    <tsd:index>
                      <tsd:standard></tsd:standard>
                    </tsd:index>
                  </tsd:native>
                </tsd:physical>
              </tsd:elementInfo>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
        <xs:element name = "Address">
          <xs:complexType>
            <xs:sequence>
              <xs:element name = "Street" type = "xs:string">
                <xs:annotation>
                  <xs:appinfo>
                    <tsd:elementInfo>
                      <tsd:physical>
                        <tsd:native>
                          <tsd:index>
                            <tsd:standard></tsd:standard>
                          </tsd:index>
                        </tsd:native>
                      </tsd:physical>
                    </tsd:elementInfo>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
              <xs:element name = "City" type = "xs:string">
                <xs:annotation>
                  <xs:appinfo>
                    <tsd:elementInfo>
                      <tsd:physical>
                        <tsd:native>
                          <tsd:index>
                            <tsd:standard></tsd:standard>
                          </tsd:index>
                        </tsd:native>
                      </tsd:physical>
                    </tsd:elementInfo>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
              <xs:element name = "ZIP" type = "xs:integer">
                <xs:annotation>
                  <xs:appinfo>
                    <tsd:elementInfo>
                      <tsd:physical>
                        <tsd:native>
                          <tsd:index>
                            <tsd:standard></tsd:standard>
                          </tsd:index>
                        </tsd:native>
                      </tsd:physical>
                    </tsd:elementInfo>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
              <xs:element name = "Country" type = "xs:string">
                <xs:annotation>
                  <xs:appinfo>
                    <tsd:elementInfo>
                      <tsd:physical>
                        <tsd:native>
                          <tsd:index>
                            <tsd:standard></tsd:standard>
                          </tsd:index>
                        </tsd:native>
                      </tsd:physical>
                    </tsd:elementInfo>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
              <xs:element name = "Phone" type = "xs:string">
                <xs:annotation>
                  <xs:appinfo>
                    <tsd:elementInfo>
                      <tsd:physical>
                        <tsd:native>
                          <tsd:index>
                            <tsd:standard></tsd:standard>
                          </tsd:index>
                        </tsd:native>
                      </tsd:physical>
                    </tsd:elementInfo>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
              <xs:element name = "Fax" type = "xs:string">
                <xs:annotation>
                  <xs:appinfo>
                    <tsd:elementInfo>
                      <tsd:physical>
                        <tsd:native>
                          <tsd:index>
                            <tsd:standard></tsd:standard>
                          </tsd:index>
                        </tsd:native>
                      </tsd:physical>
                    </tsd:elementInfo>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name = "EntryID" type = "xs:integer">
        <xs:annotation>
          <xs:appinfo>
            <tsd:attributeInfo>
              <tsd:physical>
                <tsd:native>
                  <tsd:index>
                    <tsd:standard></tsd:standard>
                  </tsd:index>
                </tsd:native>
              </tsd:physical>
            </tsd:attributeInfo>
          </xs:appinfo>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>