[ 
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

Reply via email to