Re: [xml-dev] A XSD regex to allow a QName in Clark form

From
<>
To
Michael Kay <>
Date
2017-09-14T09:17:38Z
ID
<>
Thread
Re: [xml-dev] A XSD regex to allow a QName in Clark form
As I use this value to create a new net.sf.saxon.s9api.QName, via 
constructor and factory methods, I'm gonna check this.
Thanks a lot for this precises explanations.

Best regards,
Christophe



Le 2017-09-14 11:04, Michael Kay a écrit :
> Some more precise terminology might help.
> 
> Clark notation is described here:
> 
> http://www.jclark.com/xml/xmlns.htm
> 
> and uses the notation "{uri}local" for a name that is in a namespace.
> That page doesn't define a corresponding notation for a name in no
> namespace, but it would be wise to accept either "local" or "{}local"
> unless specified otherwise. The JAXP API (for example
> Transformer.setParameter) uses Clark notation (without naming it) and
> says that "local" should be used for a no-namespace name: it does not
> allow "{}local".
> 
> XPath 3.0 introduces a similar syntax. An EQName is either a (lexical)
> QName (format: (prefix:)?local ), or a URIQualifiedName, format
> 
> "Q" "{" [^{}]* "}" NCName
> 
> which is equivalent to the regex
> 
> Q\{[^{}]*\}\i\c*
> 
> This format explicitly allows a no-namespace name to be written as
> Q{}local.
> 
> Michael Kay
> Saxonica
> 
>> On 14 Sep 2017, at 08:56, yamahito <> wrote:
>> Try
>> <xs:pattern value="Q?\{[^\}]+\}[^:\{\}]+"/>
>> ?
>> 
>> On Thu, 14 Sep 2017 at 7:55 am, <> wrote:
>> 
>>> Hi !
>>> 
>>> I'm not a regex killer, especially when regex flavour is not the
>>> one I
>>> use on my linux box...
>>> 
>>> In a schema, I need a simple type that allows a QName, written
>>> either
>>> "prefix:localName" or in ClarkeForm "Q{nsUri}localName", or in
>>> the-last-one-I-cant-remember-the-name "{nsUri}localName"
>>> 
>>> I've started with the one available in XSD schema :
>>> 
>>> <xs:simpleType name="QName">
>>> <xs:annotation>
>>> <xs:documentation> A QName. This schema does not use the
>>> built-in
>>> type xs:QName, but rather defines its own QName type. Although
>>> xs:QName
>>> would define the correct validation on these attributes, a schema
>>> processor would expand unprefixed QNames incorrectly when
>>> constructing
>>> the PSVI, because (as defined in XML Schema errata) an unprefixed
>>> xs:QName is assumed to be in the default namespace, which is not
>>> the
>>> correct assumption for XSLT. The data type is defined as a
>>> restriction
>>> of the built-in type Name, restricted so that it can only contain
>>> one
>>> colon which must not be the first or last character. TODO: change
>>> implementation to allow use ClarkeForm </xs:documentation>
>>> </xs:annotation>
>>> <xs:restriction base="xs:Name">
>>> <xs:pattern value="([^:]+:)?[^:]+"/>
>>> </xs:restriction>
>>> </xs:simpleType>
>>> 
>>> But my pattern for ClarkeForm isn't correct :
>>> <xs:pattern value="Q?\{[^\{]+\}[^:\{\}]+"/>
>>> 
>>> Any help will be appreciated.
>>> Thanks in advance,
>>> Christophe
>>> 
>>> 
>> 
> _______________________________________________________________________
>>> 
>>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>>> to support XML implementation and development. To minimize
>>> spam in the archives, you must subscribe before posting.
>>> 
>>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>>> Or unsubscribe: 
>>> subscribe: 
>>> List archive: http://lists.xml.org/archives/xml-dev/
>>> List Guidelines:
>>> http://www.oasis-open.org/maillists/guidelines.php