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

Mukul Gandhi commented on XERCESJ-1640:
---------------------------------------

If the requirement is to validate strings like 111-111-1111 (or perhaps any 
string. I won't go far as saying every string) with XSD, it seems to me using 
<pattern> facet would be more appropriate. The following <pattern> facet works 
for the example posted, <xs:pattern value="[0-9]{3}-[0-9]{3}-[0-9]{4}"/>.

fn:matches function does allow us to use an element node directly and take its 
string value by atomization. If that's how you intend to have string values, 
then fn:matches has a valid use case. I feel, using fn:matches is more 
appropriate if XPath 2.0 is used in a non XSD environment like XSLT, XQuery etc.

Having said these, I suspect our implementation of fn:matches may have a 
certain bug pertinent to an example you've provided. The psychopath xpath2 
engine closely uses the JDK Regex implementation, and adds certain behavior 
over it to comply with the specification of fn:matches function. When I study 
our implementation of fn:matches, I feel we need to retain the current 
implementation and solve bugs (if any) over it, since the current 
implementation is fairly good and also passes the XSD 1.1 test suite.

But I'll have this bug report open, and right action taken after more analysis.

> Regex in asserts fails to validate.
> -----------------------------------
>
>                 Key: XERCESJ-1640
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1640
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: JAXP (javax.xml.validation), XML Schema 1.1 Datatypes, 
> XML Schema 1.1 Structures
>    Affects Versions: 2.11.0
>         Environment: Ubuntu 14.04
>            Reporter: Timothy Cook
>              Labels: assertion, validation
>
> I am quite certain this worked in a previous version.  
> cvc-assertion: Assertion evaluation ('matches(DvString-dv, 
> '[0-9]{3}-[0-9]{3}-[0-9]{4}')') for element 
> 'ccd:el-06bf2593-dd8a-4681-a6e5-0470134e632b' on schema type 
> 'ct-06bf2593-dd8a-4681-a6e5-0470134e632b' did not succeed.
> Severity
> Error
> The above assert doesn't validate this string: 
> <DvString-dv>111-111-1111</DvString-dv>
> SaxonEE does validate it.  These are both the shipped validators with oXygen 
> 16.0 
> Interestingly this assert:
> <xs:assert test="matches(DvString-dv, '^\d{5}([\-]?\d{3})$')"/>
> does validate this string:
> <DvString-dv>99999-000</DvString-dv>
> There are other examples of these asserts here:
> https://github.com/mlhim/tb
>  
>  



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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

Reply via email to