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]

Reply via email to