[xsl] XSLT program that generates XSD, the XSD has a pattern facet, the regex has curly braces, the curly braces are causing me trouble

Subject: [xsl] XSLT program that generates XSD, the XSD has a pattern facet, the regex has curly braces, the curly braces are causing me trouble
From: "Costello, Roger L. costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 19 Jul 2017 12:44:15 -0000
Hi Folks,

I am writing an XSLT program that outputs an XML Schema.

The generated XML Schema is to contain a simpleType, with a pattern facet. Its
regex is to express: zero or more lowercase letters of the English alphabet,
the left curly brace, and the right curly brace:

<xs:simpleType name="Stuff">
    <xs:restriction base="xs:string">
        <xs:pattern value="[a-z\{\}]*" />
    </xs:restriction>
</xs:simpleType>

The curly braces are special symbols in the regex language, so I escaped them:
\{ and \}

Interestingly, the curly braces are also special symbols in the XSLT language.
That's causing me problems.

Below is my XSLT program. It doesn't work  - an error is generated because of
the curly braces. Note that replacing the curly braces with their character
references also failed:

<xs:pattern value="[a-z\&#x7B;\ &#x7D;]*" />

What's the right way to do this?  /Roger

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    	xmlns:xs="http://www.w3.org/2001/XMLSchema";
    	exclude-result-prefixes="xs"
    	version="2.0">

    <xsl:output method="xml" />

    <xsl:template match="/">
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
            <xs:element name="Test" type="Stuff" />
            <xs:simpleType name="Stuff">
                <xs:restriction base="xs:string">
                    <xs:pattern value="[a-z\{\}]*" />
                </xs:restriction>
            </xs:simpleType>
        </xs:schema>
    </xsl:template>

</xsl:stylesheet>

Current Thread