xerces-j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mukul Gandhi (JIRA)" <xerces-j-...@xml.apache.org>
Subject [jira] Commented: (XERCESJ-1391) XML Schema 1.1, inheritable attributes implementation
Date Tue, 11 Aug 2009 16:13:14 GMT

    [ https://issues.apache.org/jira/browse/XERCESJ-1391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741929#action_12741929
] 

Mukul Gandhi commented on XERCESJ-1391:
---------------------------------------

Hi Hiranya,
   Here is my opinion, about one of the questions you asked earlier.

I realized that you have used a nested class named InheritableAttribute to keep track of inherited
attributes. You have stored them in a map keyed by element information. I was wondering wouldn't
it be sufficient to simply keep track of the attribute index instead of an InheritableAttribute
object? We can always use the index to lookup the attributes list and get to the inherited
attribute.

[mukul] I have investigated the approach you have suggested, as stated above. I think, it's
not possible to implement like this (i.e., to store just the indexes of attributes). We certainly
need some container structure (like, InheritableAttribute object I have chosen) to store inherited
attributes.
In the saveInheritableAttributes method, if we just store the indexes of attributes which
are inherited, we can build the Map of element level vs the inherited attributes (only storing
the attribute indexes) for that element.
Now when we want to get all inherithed attributes for the current element, while processing
CTA, we need all properties of the inherited attributes, like name, value, uri etc. Since
we are working with an XNI stream, therefore all attribute information of the previous elements
proceessed are lost, and we can't retrieve attribute properties with the indexes, for the
inherited attributes. That's why we need to store all attribute information (in InheritableAttribute
object, as I have done) for inheritable attributes.
The pattern to create a local class (like, "InheritableAttribute" here) is used much in Xerces,
therefore, I opted to use this pattern.

Regards,
Mukul

> 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
>            Assignee: Khaled Noaman
>         Attachments: inhr_attr_patch.txt, test.xml, test.xsd
>
>
> 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: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org


Mime
View raw message