Use simple strings for these various parts of a person's name
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.java2s.com" xmlns="http://www.java2s.com" elementFormDefault="qualified"> <xs:element name="PersonName" > <xs:complexType> <xs:choice> <xs:element name="SingleName" type="xs:string" /> <xs:sequence> <xs:element name="Prefix" type="xs:string" minOccurs="0" /> <xs:element name="GivenName" type="xs:string" /> <xs:element name="MiddleName" type="xs:string" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="FamilyName" type="xs:string" /> <xs:element name="Suffix" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:choice> </xs:complexType> </xs:element> </xs:schema> Some examples of XML data that conform to this datatype include: <PersonName> <Prefix>Mr</Prefix> <GivenName>J</GivenName> <MiddleName>Q</MiddleName> <FamilyName>Public</FamilyName> <Suffix>Jr</Suffix> </PersonName> <PersonName> <GivenName>Jane</GivenName> <FamilyName>Doe</FamilyName> </PersonName> <PersonName> <SingleName>Madonna</SingleName> </PersonName>