A posting from Bob Schloss describes the public availability of a requirements document for an XML Schema Infoset API and code being written to produce a reference implementation for the schema components API. The requirements document outlines "the design principles, scope, and requirements for a XML Schema Infoset and API; it includes requirements as they relate to development time and runtime software which: (1) constructs, examines or modifies schema components; (2) examines the Post Schema Validation Infoset; (3) makes use of schema components in conjunction with components that represent the infoset of other namespaces (such as WSDL or XForms). It includes requirements concerning the data model, external requirements, and coordination. The API could be used by programs such as: editors of XML instance documents which provide guidance based on a schema; tools that examine pairs of schemas; mapping tools that support non-XML data sources at one end and schema-described XML at the other; tools to visualize, create, modify and extend XML Schemas." The IBM development team is building a reference implementation for the API which is expected to be "very complete -- not simply read-only, but able to handle any XML Schema, no matter how complex." This work, including source code, UML, example usage code, and documentation is available online.
From the requirements docment: "Schema APIs and models have begun to appear from commercial software vendors (such as TIBCO) and from open source efforts (such as Castor). The W3C Schema WG has been advised that Markup Technologies, a W3C member, is also developing an API to Schema components. These generally support a subset of the operations one might wish to perform on W3C XML Schemas; for example, updates to schema components, and coordinating changes to corresponding schema documents, are often not considered. A complete API with multiple implementations would be an extremely valuable augmentation to the W3C XML Schema language specifications... This document uses the term core methods to mean the set of methods or functions which permit construction or examination of W3C XML Schema components. This document uses the term non-core methods to mean the set of methods or functions which make construction, examination, modification, comparison, search of, or diagnostic feedback on, W3C XML Schemas much easier to code, but which, if not implemented, can have their functions accomplished by more extensive use of the core methods."
From the announcement of Bob Schloss:
There has been a lot of discussion on various mailing lists about the benefits of a standard API which would allow software that creates, examines or modify XML Schemas, written in Java, to do so in a way that represents the semantic XML schema components described in the W3C XML Schema specifications.
I have been lucky to work with Ed Merks, part of the IBM Websphere Studio Application Developer development group, to define such an API and to produce a reference implementation. Although we have not yet completed every last function we have in mind to implement, nor have we done any performance tuning, this API has been used successfully in building several real XML and Web Services tools. We have tried to make a reasonable and straightforward Javadoc, and have been grateful to have Shane Curcuru, who has worked on the Apache Xalan team, give us some guidance on how to do this. We are aiming for an API which is very complete: not simply read- only, and able to handle any XML Schema, no matter how complex. We tried to use the terminology from the W3C's XML Schema specifications in naming our classes/interfaces, methods, a constants.
We have now made this work, including source code, UML, example usage code and documentation, available publically for the wider community to examine and use. Donating a future version of this to some open source effort is possible, although I can't make a commitment on behalf of IBM at this time.
From the WebSphere Studio Workbench XSD feature FAQ document: "If you are writing a Java program that takes an XML Schema as input, or creates or modifies an XML Schema, you are invited to use the common IBM Java library for Schema Components, aka Schema Infoset Model... The W3C Recommendation for XML Schema (May 2, 2001) is accepted as input... Examples of convenience functions also illustrate the use of the bare API; those example convenience functions are in the source code... How the library uses the EMF runtime under the covers: The library was developed with some unique IBM tools that emit Java code scaffolding that manages relationships between objects based on how they are related in the UML Logical Class Diagrams. The emitted code makes use of relationship- and resource-management services in the EMF runtime. It supports a sophisticated notification framework that allows programs to register as listeners for various mutation events on schemas. EMF is an acronym for E-Modeling Framework..."
- Announcement 2002-05-24: "Preliminary Version of Schema Components Infoset Model in Java by IBM is available on Partnerworld for Developers."
- XML Schema Infoset Model website
- Developer FAQ
- Analyzing XML schemas with the Schema Infoset Model
- Diagrams and Animations of the internals of XSD models
- XML Schema Infoset API Requirements. IBM Working Draft 15-February-2002. Version URL: http://www.research.ibm.com/XML/schema/WD-XML-Schema-Infoset-API-Req.htm.
- Download Schema Infoset Model (XSD feature) [Registration]
- Feedback: firstname.lastname@example.org
- "Analyzing XML Schemas With the Schema Infoset Model. Easily Perform Complex Queries on Your Schemas With This Model." By Shane Curcuru (Advisory Software Engineer, IBM). From IBM developerWorks, XML Zone. June 2002.
- Contact: Bob Schloss (XML/XSL Transformational Technologies, IBM T.J. Watson Research Center)
- W3C XML Schema website
- "XML Schemas" - Main reference page.