[ https://issues.apache.org/jira/browse/XERCESJ-1496?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12993227#comment-12993227 ]
Michael Glavassevich commented on XERCESJ-1496: ----------------------------------------------- I kind of glossed over the examples when I wrote my first comment, but taking a deeper look at the W3C test, I wonder if the real issue is that the test is invalid (or doesn't test what it intended). If the author wanted the assertion to apply to the list as whole I would have expected to see a restriction of the list type not its item type, for example: <xs:element name="list"> <xs:simpleType> <xs:restriction> <xs:simpleType> <xs:list itemType="xs:integer"/> </xs:simpleType> <xs:assertion test="count($value) eq count(distinct-values($value))" /> </xs:restriction> </xs:simpleType> </xs:element> > adding new feature to JAXP validator for folded simpleType->list assertions > evaluation > -------------------------------------------------------------------------------------- > > Key: XERCESJ-1496 > URL: https://issues.apache.org/jira/browse/XERCESJ-1496 > Project: Xerces2-J > Issue Type: Improvement > Components: XML Schema 1.1 Structures > Affects Versions: 2.11.0 > Reporter: Mukul Gandhi > Assignee: Mukul Gandhi > Priority: Minor > > Here's a description of the rationale and benefits of this change, and a > small schema 1.1 validation use case illustrating the proposed changes. > One of the test cases in W3C XML Schema 1.1 test suite is as follows: > XML document [1]: > <list>1 2 3 4 5</list> > XML Schema 1.1 document [2]: > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:element name="list"> > <xs:simpleType> > <xs:list> > <xs:simpleType> > <xs:restriction base="xs:integer"> > <xs:assertion test="count($value) eq > count(distinct-values($value))" /> > </xs:restriction> > </xs:simpleType> > </xs:list> > </xs:simpleType> > </xs:element> > > </xs:schema> > The assertion facet in this example would mean, > "there must be no duplicates in the list" > Xerces (before this change) didn't support an use case like above. For the > above example currently Xerces evaluates assertion for each list item > (therefore Xerces would make 5 calls to an assertion for this example, and > the XPath 2 context variable $value being different/"list item" in each > iteration) -- but this would not serve the purpose of this use case. > I believe we must support this use case. To support this facility I propose a > change along the following lines: > We introduce a new feature on JAXP validator with name > "http://apache.org/xml/features/validation/foldedSTlist-assertion-evaluation" > whose default value is an boolean 'false' (therefore not setting this feature > or making it explicitly 'false' would retain the current Xerces behavior). > Setting this feature to 'true' would cause assertion evaluation as required > by the above use case. > The current Xerces implementation to evaluate assertion facet on each list > item is also beneficial; for example with a schema 1.1 fragment something > like below: > <xs:element name="list"> > <xs:simpleType> > <xs:list> > <xs:simpleType> > <xs:restriction base="xs:integer"> > <xs:assertion test="$value mod 2 = 0" /> > </xs:restriction> > </xs:simpleType> > </xs:list> > </xs:simpleType> > </xs:element> > (the assertion failure error messages in this example would tell us, that > what all list items didn't pass the test AND I believe that this run-time > behavior is also useful) > To summarize this change: > 1. Setting the mentioned JAXP feature to 'true' would cause assertion to be > evaluated only once on the entire list (which would have a type annotation > xs:anyAtomicType*). > 2. Not setting this JAXP feature explicitly (since it's default value is > 'false' within Xerces XML Schema 1.1 validator), or setting explicitly it's > value to 'false' would retain the current Xerces behavior as has been > explained above. > I hope that this enhancement is useful. I'll shortly be committing changes > for this facility (along with related support to jaxp.SourceValidator > sample). Any comments about this change would be helpful to us. -- This message is automatically generated by JIRA. - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: j-dev-unsubscr...@xerces.apache.org For additional commands, e-mail: j-dev-h...@xerces.apache.org