xsl-list
[Top] [All Lists]

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

2017-07-19 08:01:48
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> 
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>