[Home] [By Thread] [By Date] [Recent Entries]

  • From: Mukul Gandhi <mukulg@s...>
  • To: Roger L Costello <costello@m...>
  • Date: Fri, 10 Dec 2021 11:36:16 +0530

On Thu, Dec 9, 2021 at 12:04 AM Roger L Costello <costello@m...> wrote:
The value of the pattern facet is a regular expression (regex) and the question mark is a reserved symbol (it is a meta-symbol). To indicate that we want the question mark (not the meta-symbol) we must escape it:

    <xs:simpleType name="Test2">
        <xs:restriction base="xs:string">
            <xs:pattern value="A|B|\?" />
        </xs:restriction>
    </xs:simpleType>

With XML Schema 1.1, I sometimes prefer <xs:assertion test="matches(..)"/> over <xs:pattern value=".."/>, particularly for complex regexes. With XPath 2.0 fn:matches, we can use regex flags as defined by XPath 2.0 F&O spec (https://www.w3.org/TR/xquery-operators/#regex-syntax), to break long regex into multiple lines for readability. For e.g, translating above cited XSD simpleType would look like following (not tested) with  xs:assertion,

<xs:simpleType name="Test2">
        <xs:restriction base="xs:string">
            <xs:assertion test="matches($value, 'A
                                                                        | B
                                                                        | \?', 'mx')" />
        </xs:restriction>
</xs:simpleType>

(this can be even more helpful, when regexes are much more complex)


--
Regards,
Mukul Gandhi


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member