XML Schema 1.1, inheritable attributes implementation
-----------------------------------------------------

                 Key: XERCESJ-1391
                 URL: https://issues.apache.org/jira/browse/XERCESJ-1391
             Project: Xerces2-J
          Issue Type: New Feature
          Components: XML Schema 1.1 Structures
    Affects Versions: 2.9.1
            Reporter: Mukul Gandhi


Hi all,
    I have written an implementation, for XML Schema 1.1 inheritable 
attributes. I am creating this JIRA issue for inheritable 
attributes, with a patch.

I think, that a review of these changes would be good before we commit these 
changes to SVN server. This will help to ensure the correctness of 
implementation, and better quality of the code.

I request, that this JIRA issue be assigned to the appropriate reviewer.

Below are some implementation details, and a bit of design thinking I have in 
mind, for inherited attributes implementation.

This patch has all the implementation for attribute traversal changes, and also 
some changes in XMLSchemaValidator.java 
(which are currently not finalized, but I plan to use these changes in CTA and 
assertions enhancements, for inheritable 
attributes).

I am also attaching a dummy XML and XSD files, which I used to verify the 
attribute traversal changes. The attached XML is 
valid, for the given XSD, using the current XML Schema 1.1 code in SVN, plus 
this patch that I have written.

As mentioned above, apart from attribute traversal changes (which are working 
fine, and tested at my end), the following code has been written in 
XMLSchemaValidator.java, which I plan to use to enhance CTA and assertions 
implementation, for inherited attributes:

I have written a new method, saveInheritableAttributes(..) in 
XMLSchemaValidator.java, which I am invoking from, 
handleStartElement method.

[1] CTA (conditional type assignment) changes

I plan to enhance CTA implementation as following, to be able to use inherited 
attributes:

In XMLSchemaValidator.java, I plan to modify the code fragment for CTA (the 
fragment, //process type alternatives). I'll add 
inherited attributes from the list, fInheritableAttrMap (using the element 
level information, which is the key to this map 
object) to the "attributes (of type XMLAttributes)" list.

Rest of the code for CTA will remain same. The statement,

if (test != null && test.evaluateTest(element, attributes)) {

would use the new list of attributes (attributes, which are physically present 
on this element, plus the inherited attributes).

After the CTA processing is complete (i.e after a type from CTA is assigned to 
the element), I'll remove the inherited 
attributes from the "attributes" list, so the original set of attributes is 
used by code after CTA processing. 

I think, these are all the changes that are required to enhance CTA 
implementation, to be able to use inherited attributes.

[2] Assertion enhancements

I plan to enhance assertions implementation as following, to be able to use 
inherited attributes:

In the, handleStartElement method, I'll pass the inherited attributes as well 
to the assertions interface.

To do this, I think following:
addAssertsForEvaluation(element, attributes);

would change to something like,

addAssertsForEvaluation(element, attributes, inheritedattributes);

In XMLAssertPsychopathImpl.java, I'll add the inherited attributes as well in 
the XDM tree to all descendant elements.

I think, these changes would be sufficient, to implement inherited attributes, 
on assertions.

I have just outlined the logic to enhance CTA and assertions, for inherited 
attributes. The final code, might look a bit 
different, than the specifics I have mentioned here.

I would be thankful, if you could send me the feedback to this patch, and 
confirmation (and feedback) that CTA and assertions design changes, look ok.

After I recieve the feedback to this patch, and to CTA and assertions design 
changes, I'll do the suggested modifications.

I would appreciate, feedback from any member of the xerces-dev community, as 
well.

Regards,
Mukul

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to