This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Regular expressions in a schema


Hi Chuck,

XML Schema questions are best directed to xmlschema-dev@w3.org. 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
follows:

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

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.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]