Dear Wiki user, You have subscribed to a wiki page or wiki category on "Xerces Wiki" for change notification.
The "ishanjayawardena/scd_proposal" page has been changed by ishanjayawardena. http://wiki.apache.org/xerces/ishanjayawardena/scd_proposal?action=diff&rev1=19&rev2=20 -------------------------------------------------- Apache Xerces2 is a high-performance, standard complaint processor written in Java for parsing, validating, serializing and manipulating XML documents. The objective of this project is to implement a parser and an evaluator for schema component designators (SCD) that can be used to identify and retrieve XML schema component(s) from the XML schema data model used by Xerces. Schema components that are defined in two W3C recommendations; ''XML Schema Part 1: structures''[[#1 | [1] ]] and ''XML Schema part 2: Data types''[[#2|[2] ]] act as the building blocks of an XML schema document. == Description == ''W3C XML Schema Definition Language (XSD): Component Designators'' is a specification that reached W3C candidate recommendation in January 2010[[#3|[3] ]] with W3C inviting the community to start implementing it[[#4|[4] ]]. The main advantage SCD provides for the programmers is making it easier to navigate an XML schema object model more efficiently by reducing the amount of code that they have to write to retrieve a set of specific schema components. This is achieved by using a path expression similar to an XPath expression. The W3C SCD specification defines two basic types of SCDs[[#5|[5] ]],<<BR>> - 1. Absolute SCDs (ASCD): An ASCD identifies a particular schema component; it consists of two parts: a designator for the assembled schema (a schema designator), and a designator for a particular schema component or schema components relative to that assembled schema (a relative schema component designator). Syntactically, an ASCD consists of a URI without a fragment identifier part which identifies the schema and an XPointer fragment identifier which encapsulates a schema component path (SCP)[[#6|[6] ]] to designate a set of components in the context of that schema.<<BR>> + 1. '''Absolute SCDs (ASCD)''': An ASCD identifies a particular schema component; it consists of two parts: a designator for the assembled schema (a schema designator), and a designator for a particular schema component or schema components relative to that assembled schema (a relative schema component designator). Syntactically, an ASCD consists of a URI without a fragment identifier part which identifies the schema and an XPointer fragment identifier which encapsulates a schema component path (SCP)[[#6|[6] ]] to designate a set of components in the context of that schema.<<BR>> - 2. Relative SCDs (RSCD): An RSCD identifies a particular schema component relative to some current assembled schema; it is expressed as an XPointer scheme xscd() that uses a schema component path as the scheme data. This XPointer scheme may be used in combination with the XPointer xmlns() scheme. + 2. '''Relative SCDs (RSCD)''': An RSCD identifies a particular schema component relative to some current assembled schema; it is expressed as an XPointer scheme xscd() that uses a schema component path as the scheme data. This XPointer scheme may be used in combination with the XPointer xmlns() scheme. + For instance, consider the ASCD, {{{http://example.org/schemas/po.xsd#xscd(/type::purchaseOrderType)}}}. In here, the URI {{{http://example.org/schemas/po.xsd}}} refers to an assembled schema and the XPointer fragment (which is an RSCD) {{{xscd(/type::purchaseOrderType)}}} refers to a particular schema component by using the SCP {{{/type::purchaseOrderType}}}. Following is an ASCD with a namespace binding, {{{http://example.org/schemas/po.xsd#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress)}}}. In here, {{{xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress)}}} represents an RSCD. The W3C SCD specification consists of a more comprehensive set of examples[[#7|[7] ]][[#8|[8] ]][[#9|[9] ]] that illustrates a number of possible usages and types of SCDs/SCPs.<<BR>> - For instance, consider the following ASCD,<<BR>> - {{{http://example.org/schemas/po.xsd#xscd(/type::purchaseOrderType)}}}<<BR>> - In here, the URI {{{http://example.org/schemas/po.xsd}}} refers to an assembled schema and the XPointer fragment (which is an RSCD) {{{xscd(/type::purchaseOrderType)}}} refers to a particular schema component by using the SCP {{{/type::purchaseOrderType}}}. Following is an ASCD with a namespace binding,<<BR>> - {{{http://example.org/schemas/po.xsd#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress)}}}<<BR>> - In here, {{{xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress)}}} represents an RSCD. The W3C SCD specification consists of a more comprehensive set of examples[[#7|[7] ]][[#8|[8] ]][[#9|[9] ]] that illustrates a number of possible usages and types of SCDs/SCPs.<<BR>> Please note that the term ''assembled schema'' (or ''schema'' or ''the schema description schema component'') refers to a logical graph of schema components and these schemas may be physically represented as schema documents. In Xerces, the schema description schema component(i.e. the XML schema object model) is represented by the XSModel[[#10|[10] ]] interface and the schema components are represented by the org.apache.xerces.xs interfaces.<<BR>> @@ -65, +61 @@ I checked out and built the Xerces trunk and then I tried out some samples and tests and started to study the code, specially, the coding standards and styles that have been used and the package structure etc. Because I have no prior experience on using Java tools like annotations, packaging, unit tests and documentation generation, etc., I also started to learn them and I looked at existing issues of Xerces related to XML Schema API and searched if there are issues related to SCD in JIRA. I spent most of my time to research on SCD, specially to trying to understand the W3C SCD specification, to learn the background knowledge in XML Schema and XSModel, and to set up measurable goals for the project.<<BR>> == Development Schedule == - I am planning to learn most of the required programming skills while doing the development. But initially (i.e. during the community bonding period) I will learn advanced Java skills and the required knowledge of XML schema and XML schema API since they are essential to start designing the components and to begin coding. I will dedicate the complete four-month period starting from April and lasting until the end of August for this project and I could work between forty to fifty hours per week. + I am planning to learn most of the required programming skills while doing the development. But initially (i.e. during the community bonding period) I will learn advanced Java skills and the required knowledge of XML schema and XML schema API since they are essential to start designing the components and to begin coding. I will dedicate the complete four-month period starting from April and lasting until the end of August for this project and I could work between thirty to forty hours per week. || Community Bonding Period: April 26 - May 24 || Get to know the mentor and the community<<BR>>Learning more about the required API and features<<BR>>Preparing the development environment<<BR>>Familiarizing myself with Xerces, XML Schema API and Java technologies etc.<<BR>>Reading documentation about JavaCC<<BR>>Start designing the system: this includes designing the required data structures and algorithms for the SCP parser and the evaluator, overall class hierarchy, and deciding where and how to implement methods of the API etc. || || Interim Period: May 24 - July 12 || Finalizing the API design<<BR>>Dividing the development process into stages with the help of the mentor<<BR>>Completing the SCP parser and together with its unit tests<<BR>>Begin coding the evaluator (I believe the development of the evaluator will take more time than that of the parser and therefore I have allocated more time for it) || || July 12 - July 16 || Submitting mid-term evaluations and continue with the development of the evaluator || --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
