 |
The AutoCodeGen system takes a valid schema and returns the
requested code for that schema.
Sample Schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="news">
<xs:annotation>
<xs:documentation>news information is stored here</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="event" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="groups">
<xs:complexType>
<xs:sequence>
<xs:element name="group" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Main"/>
<xs:enumeration value="Company"/>
<xs:enumeration value="Products"/>
<xs:enumeration value="Consulting"/>
<xs:enumeration value="AutoCodeGen"/>
<xs:enumeration value="AuditTrackerPro"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="timestamp"/>
<xs:element name="title"/>
<xs:element name="text-only"/>
<xs:element name="html-only" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
After giving the above schema to AutoCodeGen and
selecting JavaScript it produces the following code:
(Note: the functions InitNode and InitAttribute have been
intensionally omitted from this example.)
var xdoc_news;
/* "Root" Class "newsClass" */
function newsClass ()
{
Init_news = function() {
InitNode();
return xdoc_news.documentElement;
}
Init_news();
getRootNode = function() {
return Init_news();
}
this.xml = function() {
return xdoc_news.xml;
}
this.loadXML = function(xml) {
InitNode(xdoc_news);
return xdoc_news.loadXML(xml);
}
function eventClass ()
{
Init_event = function() {
var rtnNode;
var pNode = Init_news();
var desiredNode = pNode.selectSingleNode("event");
if (desiredNode == null) {
rtnNode = InitNode("event", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_event();
this.getNode = function() { return Init_event(); }
this.xml = function() { return Init_event().xml; }
this.loadXML = function(xml) {
var rtnValue;
if (xml != null) {
var xdoc;
var newNode;
var desiredNode;
xdoc = new ActiveXObject("Msxml2.DOMDocument");
xdoc.loadXML(xml);
newNode = xdoc.documentElement;
desiredNode = Init_news();
desiredNode.replaceChild(newNode,Init_event());
rtnValue = true;
}
else { rtnValue = false; }
return rtnValue;
}
function groupsClass ()
{
Init_groups = function() {
var rtnNode;
var pNode = Init_event();
var desiredNode = pNode.selectSingleNode("groups");
if (desiredNode == null) {
rtnNode = InitNode("groups", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_groups();
this.getNode = function() { return Init_groups(); }
this.xml = function() { return Init_groups().xml; }
this.loadXML = function(xml) {
var rtnValue;
if (xml != null) {
var xdoc;
var newNode;
var desiredNode;
xdoc = new ActiveXObject("Msxml2.DOMDocument");
xdoc.loadXML(xml);
newNode = xdoc.documentElement;
desiredNode = Init_event();
desiredNode.replaceChild(newNode,Init_groups());
rtnValue = true;
}
else { rtnValue = false; }
return rtnValue;
}
function groupObject ()
{
Init_group = function() {
var rtnNode;
var pNode = Init_groups();
var desiredNode = pNode.selectSingleNode("group");
if (desiredNode == null) {
rtnNode = InitNode("group", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_group();
this.getText = function () {
var desiredNode = Init_group();
return desiredNode.text;
}
this.setText = function (txt) {
var desiredNode = Init_group();
if (txt != null) {
switch (txt) {
case 'Main':
case 'Company':
case 'Products':
case 'Consulting':
case 'AutoCodeGen':
case 'AuditTrackerPro':
desiredNode.text = txt;
break;
default:
desiredNode.text = "";
break;
}
}
else { desiredNode.text = ""; }
return desiredNode.text;
}
}
this.group = new groupObject;
}
this.groups = new groupsClass;
function timestampObject ()
{
Init_timestamp = function() {
var rtnNode;
var pNode = Init_event();
var desiredNode = pNode.selectSingleNode("timestamp");
if (desiredNode == null) {
rtnNode = InitNode("timestamp", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_timestamp();
this.getText = function () {
var desiredNode = Init_timestamp();
return desiredNode.text;
}
this.setText = function (txt) {
var desiredNode = Init_timestamp();
if (txt != null) {
desiredNode.text = txt;
}
else { desiredNode.text = ""; }
return desiredNode.text;
}
}
this.timestamp = new timestampObject;
function titleObject ()
{
Init_title = function() {
var rtnNode;
var pNode = Init_event();
var desiredNode = pNode.selectSingleNode("title");
if (desiredNode == null) {
rtnNode = InitNode("title", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_title();
this.getText = function () {
var desiredNode = Init_title();
return desiredNode.text;
}
this.setText = function (txt) {
var desiredNode = Init_title();
if (txt != null) {
desiredNode.text = txt;
}
else { desiredNode.text = ""; }
return desiredNode.text;
}
}
this.title = new titleObject;
function textOnlyObject ()
{
Init_textOnly = function() {
var rtnNode;
var pNode = Init_event();
var desiredNode = pNode.selectSingleNode("text-only");
if (desiredNode == null) {
rtnNode = InitNode("text-only", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_textOnly();
this.getText = function () {
var desiredNode = Init_textOnly();
return desiredNode.text;
}
this.setText = function (txt) {
var desiredNode = Init_textOnly();
if (txt != null) {
desiredNode.text = txt;
}
else { desiredNode.text = ""; }
return desiredNode.text;
}
}
this.textOnly = new textOnlyObject;
function htmlOnlyObject ()
{
Init_htmlOnly = function() {
var rtnNode;
var pNode = Init_event();
var desiredNode = pNode.selectSingleNode("html-only");
if (desiredNode == null) {
rtnNode = InitNode("html-only", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
this.getText = function () {
var desiredNode = Init_htmlOnly();
return desiredNode.text;
}
this.setText = function (txt) {
var desiredNode = Init_htmlOnly();
if (txt != null) {
desiredNode.text = txt;
}
else { desiredNode.text = ""; }
return desiredNode.text;
}
}
this.htmlOnly = new htmlOnlyObject;
function idAttributeObject ()
{
Init_id = function() {
var rtnNode;
var pNode = Init_event();
var desiredNode = pNode.attribute.getNamedItem("id");
if (desiredNode == null) {
rtnNode = InitAttribute("id", pNode);
}
else {
rtnNode = desiredNode;
}
return rtnNode;
}
Init_id();
this.getText = function () {
var desiredNode = Init_id();
return desiredNode.text;
}
this.setText = function (txt) {
var desiredNode = Init_id();
if (txt != null) {
desiredNode.text = txt;
}
else { desiredNode.text = ""; }
return desiredNode.text;
}
}
this.id = new idAttributeObject;
}
this.event = new eventClass;
}
|
 |