Listing 1
A schema definition using element and complex type for the cases:
<xs:complexType name="Employee">
<xs:sequence>
<xs:element name="ssn" type="xs:integer"/>
<xs:element name="name" type="name"/>
<xs:element name="salary" type="xs:float"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="name">
<xs:sequence>
<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
A schema definition using element and element references for the cases:
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element ref="ssn"/>
<xs:element ref="name"/>
<xs:element ref="salary"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ssn" type="name" />
<xs:element name="name" type="xs:string"/>
<xs:element name="salary" type="xs:float"/>
<xs:complexType name="name">
<xs:sequence>
<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Listing 2
public class SchemaInstance implements IXercesInstance
{
// implemented methods from IXercesInstance
public abstract void parseSchema(XSObject aCaptureNode, Node aParentNode,
Object aFillerObject) throws Exception;
public abstract Node parseSchemaElement(XSObject aCaptureNode,
Node aParentNode, Object aFillerObject) throws Exception;
public abstract void fillupData(XSObject aCaptureNode, Node lContentElem,
Object aFillerObject);
public abstract int getNumOccours(XSParticle aNode, int aAllowedMax);
// implemented methods from Instance
public abstract void generateInstance(OutputStream aOut)throws Exception;
public abstract void generateInstance(String aFilePath) throws Exception;
// important class methods
protected void handleGroup(XSModelGroup aGroup, Element aContext,Object
aFillerObject)throws Exception
protected void handleParticle(XSParticle particle, Element aContentElem,
Object aFillerObject)throws Exception
protected void handleAttribute(XSAttributeUse aAttr, Attr aGenAttr,
String aVal)
protected void handleSimpleValueTypes(short asType, Node aGenNode,
String aVal)
public void fillupData(XSObject aCaptureNode, Node lContentElem,
Object aFillerObject)
....
...
}
Listing 3
public class T2xmlInstance extends SchemaInstance implements IParseProperties
{
public T2xmlInstance(String aURLOrFileName,String aDataFileStr) throws Exception
public T2xmlInstance(String aSchemaInput,URL aDataFile) throws Exception
public void handleXPathExpressions(XSObject aXsElem,Node aContentElem,String aVal)
public static void main(String[] argc)
private String getVariableValue(XSElementDeclaration aNode, String aName)
private boolean isVariableOfValue(XSElementDeclaration aNode, String aVarName,
String aVarValue)
protected boolean matchDataWithSchemaRepresetation(XSElementDeclaration aElement,
String aContent)
private Object setupFillerObject(XSElementDeclaration aElement,
String aContainerContent,String aEscapeChar)
// overridden functions from SchemaInstance
public XSObject getRootSchemaElement(XSModel aModel) throws Exception;
protected void handleParticle(XSParticle particle, Element aContentElem,
Object aFillerObject)throws Exception
public void fillupData(XSObject aElement, Node lContentElem,Object aFillerObject)
}
Listing 4
<?xml version="1.0" encoding="UTF-8"?>
<root_element>
<Employee>
<ssn>123,456789</ssn>
<name>
<fname>Ram</fname>
<lname>Singh</lname>
</name>
<salary>100000.00</salary>
</Employee>
<Employee>
<ssn>444556666</ssn>
<name>
<fname>Barr</fname>
<lname>Clark</lname>
</name>
<salary>87000.00</salary>
</Employee>
<Employee>
<ssn>777227878</ssn>
<name>
<fname>Simi D</fname>
<lname>Roy</lname>
</name>
<salary>123000.00</salary>
</Employee>
<Employee>
<ssn>998877665</ssn>
<name>
<fname>Charr</fname>
<lname>Lee</lname>
</name>
<salary>92000.00</salary>
</Employee>
</root_element>