Re: [xsl] Regular expressions in a schema

Subject: Re: [xsl] Regular expressions in a schema
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Sat, 11 May 2002 01:10:51 +0100
Hi Chuck,

XML Schema questions are best directed to xmlschema-dev@xxxxxxx But
I'll answer this here anyway...

> I'm trying to write a validating pattern in my schema to allow from
> 1 to 4 occurrances of the pattern [+]?[\.0-9]+%[ ]?
> (That's 1 - 4 real number percentages delimited by a space)
>     <simpleType name = "background_position_percentage_Type">
>         <restriction base = "string"><!-- percentage_Type{1,4} -->
>             <pattern value = "[[+]?[\.0-9]+%[ ]?]{1,4}"/>
>         </restriction>
>     </simpleType>
> doesn't work because I can't put [] inside of an atom. Does anyone
> know if there is a proper way to write this pattern?

You just need to use braces to group together the atoms, rather than
square brackets:

  (+?[\.0-9]+% ?){1,4}

although having said that, you'd be better off creating a list type
that was limited to between one and four real number percentages, as

<xs:simpleType name="background_position_percentage_type">
          <xs:restriction base="xs:token">
            <xs:pattern value="+?[\.0-9]+%" />
    <xs:minLength value="1" />
    <xs:maxLength value="4" />

Among other things (and to try to keep this vaguely on topic), this
specifies the type as a list type, which means that an XPath 2.0
processor will be able to create a sequence of real number percentages
automatically, rather than you having to break up the string yourself
to get at the values.

You might want to revisit your regular expression so that the numbers
that you get can't have two or more decimal points in them, or change
the markup language so that you don't include the % signs in the list,
and instead just make it a list of real numbers -- that would have the
added benefit that a processor would deliver the numbers rather than
you having to convert them yourself.



Jeni Tennison

 XSL-List info and archive:

Current Thread