Re: [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: Re: [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: "Syd Bauman s.bauman@xxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 19 Jul 2017 13:01:43 -0000
How about using XSLT constructors, so the part of interest is just a
string?

    <xsl:element name="pattern" namespace="http://www.w3.org/2001/XMLSchema";>
      <xsl:attribute name="value">
        <xsl:text>[a-z\{\}]*</xsl:text>
      </xsl:attribute>
    </xsl:element>
                            
> 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