Some more precise terminology might help.
Clark notation is described here:
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
Try <xs:pattern value="Q?\{[^\}]+\}[^:\{\}]+"/> ? 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: xml-dev-unsubscribe@lists.xml.org
subscribe: xml-dev-subscribe@lists.xml.org
List archive: http://lists.xml.org/archives/xml-dev/
List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
|