Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Xerces Wiki" for change 
notification.

The "gsoc_xs_override_proposal" page has been changed by uswick.
http://wiki.apache.org/xerces/gsoc_xs_override_proposal?action=diff&rev1=33&rev2=34

--------------------------------------------------

  
   . Other sub-compnents , the ”Duplicates Handler” and “Dependency Analyzer” 
would come in to support the actions executed by “Transformation Manager” . 
Duplicates handler would provide necessary logic needed to detect duplicates 
and would try to handle them gracefully. “Dependency Analyzer” is also an 
important component since it would handle various tasks such as  calculating 
TargetSet’s [3] of respective override components , supporting decisions of 
Duplicate Handler (ie:- in circular cases of overrides/includes ), etc . 
<xs:override> Semantics Component as a whole would be dependent on XSD Handler 
and vices versa  during different stages of schema processing , so that 
aforementioned tasks can be successfully completed and ultimately the grammar 
pool is constructed with new <override> schema semantics included . The 
<override> semanitcs Handler will also keep a connection to the “Override 
Component Registry” constructed in the initial phases (ie:-construct trees 
phase) of schema processing ,which would map different <override> components 
with respective schema Documents that are implicitly/explicitly be affected by 
them .
  
-  . Implementation of these components need to take into account cyclic 
dependencies which could occur in <override> transformations. As discussed in 
the beginning these scenarios occur when the overriding paths go through a 
cycle of dependencies (ie:- include's) ,especially since <override> sematics 
inturn apply for included schemas. Each time “Transformation Manager” finds an 
included schama component it would transform that into a <override> component 
with "schemaLocation" being that of the included schema.However after applying 
necessary override transformations ,the respective <override> 
components(residing in overriding schema) would be replaced by <include>s 
pointing to the overriden schemas. For example if schema A overrides B which 
includes C and C inturn overrides A , the transformations would happen as 
follows. A will include B' (transformed/overriden version of B. ) , B' includes 
C' (transformed/overriden version of C) , C' includes A' (transformed/overriden 
version of A with merged overrides of both A and C ) and also similarly A' 
incl. B'' '' ,B'''' incl. C'''' , C '''' incl. A'' '' and so on. However at the 
point of including A' , if “Transformation Manager” sees that it differes with 
A then it would handle name collisions via "”Duplicates Handler” logic. 
Otherwise it would continue to the point of including A"'' , where it would be 
notified of a cyclic dependency via “Dependency Analyzer” and would stop 
processing the cycle(since no point continuing the same cycle) and continue 
with  the schema processing work that yet to be completed.
+  . Implementation of these components need to take into account cyclic 
dependencies which could occur in <override> transformations. As discussed in 
the beginning these scenarios occur when the overriding paths go through a 
cycle of dependencies (ie:- include's) ,especially since <override> sematics 
inturn apply for included schemas. Each time “Transformation Manager” finds an 
included schama component it would transform that into a <override> component 
with "schemaLocation" being that of the included schema.However after applying 
necessary override transformations ,the respective <override> 
components(residing in overriding schema) would be replaced by <include>s 
pointing to the overriden schemas. For example if schema A overrides B which 
includes C and C inturn overrides A , the transformations would happen as 
follows. A will include B' (transformed/overriden version of B. ) , B' includes 
C' (transformed/overriden version of C) , C' includes A' (transformed/overriden 
version of A with merged overrides of both A and C ) and also similarly A' 
incl. B"  ,B" incl. C" , C" incl. A"  and so on. However at the point of 
including A' , if “Transformation Manager” sees that it differes with A then it 
would handle name collisions via "”Duplicates Handler” logic. Otherwise it 
would continue to the point of including A" , where it would be notified of a 
cyclic dependency via “Dependency Analyzer” and would stop processing the 
cycle(since no point continuing the same cycle) and continue with  the schema 
processing work that yet to be completed.
  
   . Following is a very simplified data flow diagram indicating the general 
control flow of schema processing with the proposed  <override> extension in 
place.As described earlier this shows  how our proposed <override> Handler 
extension works with XSD Handler to produce desired schema grammer with 
necessary <override> sematics info applied.
  
-  . . . {{http://farm5.static.flickr.com/4068/4486137116_4cb2ba4dc7_o.jpg}}
+  . '''''. . 
{{http://farm5.static.flickr.com/4068/4486137116_4cb2ba4dc7_o.jpg}} '''''
  
-  . .
+  . '''''. '''''
  
  == Things I have Done So far ==
-  . Since this project is about implementing a XMLSchema 1.1 specification 
construct , I had to go through this specification docs several times to 
understand the exact structure and semantics of the component I’m going to 
implement which I think is of vital  importance when it comes to the design and 
implementation. Previous discussions (that has happened in Xerces-j-dev mail 
archives) about this xs:override support , online articles and tutorials also 
helped a lot in this cause. I also interacted with Xerces mailing list 
(especially with my mentor) to clarify critical points and implementation 
details. Since knowing Xerces and it’s internal framework(XNI) is obviously 
essential for the implementation I had to dig into various documentation, API 
information ,samples  , regarding Xerces Design,architecture and especially XML 
schema processing. I did download the source code of Xerces2-j from trunk and 
build the code inorder to try and test  out some samples to get a hang on the 
flow of things related to schema loading and  processing.Running through 
several samples (xs.QuerryXS ,xni.GrammerBuilder, jaxp.SourceValidator, xni 
samples,etc) and debugging them , really gave me a good inisght into to  Xerces 
framework. I also went through XML schema processing classes available in 
org.apache.xerces.impl.xs package to get a thorough understanding on exisiting 
schema processing framework and especially on how <redefine> semantics are 
applied to schema documents which is in some ways similar to <override> 
semantics.
+  . Since this project is about implementing a XMLSchema 1.1 specification 
construct , I had to go through this specification docs several times to 
understand the exact structure and semantics of the component I’m going to 
implement which I think is of vital  importance when it comes to the design and 
implementation. Previous discussions (that has happened in Xerces-j-dev mail 
archives) about this xs:override support , online articles and tutorials also 
helped a lot in this cause. I also interacted with Xerces mailing list 
(especially with my mentor) to clarify critical points and implementation 
details. Since knowing Xerces and it’s internal framework(XNI) is obviously 
essential for the implementation I had to dig into various documentation, API 
information ,samples  , regarding Xerces Design,architecture and especially XML 
schema processing. I did download the source code of Xerces2-j from trunk and 
build the code inorder to try and test  out some samples to get a hang on the 
flow of things related to schema loading and  processing.Running through 
several samples (xs.QuerryXS ,xni.GrammerBuilder, jaxp.SourceValidator, xni 
samples,etc) and debugging them , really gave me a good inisght into to  Xerces 
framework. I also went through XML schema processing classes available in 
org.apache.xerces.impl.xs package to get a thorough understanding on exisiting 
schema processing framework and especially on how <redefine> semantics are 
applied to schema documents which is in some ways similar to <override> 
semantics.''''' '''''
  
  == Development Schedule ==
   . I would initially focus on trying to come up with a good strategy to 
implement the proposed extension. For this i would need to digg into the 
existing framework on ways to integrate it correctly without breaking the 
existing code .I am planning to interact and discuss with the the xerces 
community (and with my mentor) on their suggestions and  on any issues/bugs i 
may encounter along the way. After a good implementation strategy is in place i 
would start coding on it in several phases , taking into consideration 
different components of the proposed extension and their integration.Finally i 
will  prepare the required test cases to validate the implemented extension and 
also the necessary design documentation,API java docs ,etc. I am willing to 
dedicate atleast 20-30 hours per week for the implementation of xs:overriding  
during the assigned four month GSoc period . If i get this project accepted , i 
am pretty much confident that during this time period  i would successfully be 
able to complete the proposed implemenation with aforementioned milestones 
being achieved .
@@ -117, +117 @@

  
  
  ----
+ ''''' '''''
+ 
  == Deliverables ==
   * Source/patch related to xs:override implementation
   * Solid set of test cases to verify related aspects of xs:override schema 
composition
@@ -131, +133 @@

   . . I also do have experience involved in projects related to Eclipse 
plugins, OSGi  , XML parsers(this for our internal module DSD2.0[9] parser) and 
Data Mining (ie:-Collaborative Filtering), which got me  working in a wide 
variety of frameworks ,programming/scripting   languages such as Java ,C,C++, 
Javascript,Ruby,etc  and under various  platforms of  Linux and Windows. I am 
currently involved in implementing a TupleSpace based Distributed System 
framework (which runs on top of a DHT[distributed hash table] named FreePastry 
[opensource implementation of Microsoft Pastry] )  for our final year project 
,which facilitates time and space decoupling as well as content based 
addressing for messages  in a distributed environment [10]. I consider my self 
a motivated  computer science enthusiast who is willing to self learn and 
accept challenges and achieve them to the best of my ability.
   .
  == REFERENCES ==
- [1] http://www.w3.org/TR/xmlschema-1/#key-fullyConforming
+ '''''[1] http://www.w3.org/TR/xmlschema-1/#key-fullyConforming '''''
  
- [2] http://www.w3.org/TR/2006/REC-xml11-20060816/
+ '''''[2] http://www.w3.org/TR/2006/REC-xml11-20060816/ '''''
  
- [3] http://www.w3.org/TR/xmlschema11-1/#override-schema
+ '''''[3] http://www.w3.org/TR/xmlschema11-1/#override-schema '''''
  
- [4] http://www.w3.org/TR/xmlschema11-1/#modify-schema
+ '''''[4] http://www.w3.org/TR/xmlschema11-1/#modify-schema '''''
  
- [5] http://www.w3.org/TR/xmlschema11-1/#override-xslt
+ '''''[5] http://www.w3.org/TR/xmlschema11-1/#override-xslt '''''
  
- [6] http://www.w3.org/TR/xmlschema11-1/#chameleon-xslt
+ '''''[6] http://www.w3.org/TR/xmlschema11-1/#chameleon-xslt '''''
  
- [7] https://wso2.org/repos/wso2/trunk/carbon/components/policy-builder
+ '''''[7] https://wso2.org/repos/wso2/trunk/carbon/components/policy-builder 
'''''
  
- [8] https://wso2.org/repos/wso2/trunk/carbon/components/jruby/
+ '''''[8] https://wso2.org/repos/wso2/trunk/carbon/components/jruby/ '''''
  
- [9] http://www.brics.dk/DSD/dsd2.html
+ '''''[9] http://www.brics.dk/DSD/dsd2.html '''''
  
- [10] http://sourceforge.net/projects/bissa/
+ '''''[10] [[http://sourceforge.net/projects/bissa/]] '''''
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to