[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Using curly brace symbols in a simpleType - legal and illegal usage
- From: Roger L Costello <costello@mitre.org>
- To: "xml-dev@lists.xml.org" <xml-dev@lists.xml.org>
- Date: Wed, 8 Dec 2021 19:13:37 +0000
Hi Folks,
This XML Schema simpleType specifies that the allowable values are: one or more lower- and upper-case letters of the alphabet and left/right curly braces.
<xs:simpleType name="Test">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z\{\}]+" />
</xs:restriction>
</xs:simpleType>
Since the curly braces are regex meta-symbols, they are escaped.
That simpleType was then placed inside an XSLT template:
<xsl:template match="/">
<xs:simpleType name="Test">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z\{\}]+" />
</xs:restriction>
</xs:simpleType>
</xsl:template>
The XSLT processor flags an error: Invalid character '\' in expression.
The curly braces are also meta-symbols in XSLT. However, to escape the curly braces in XSLT use double curly braces:
<xsl:template match="/">
<xs:simpleType name="Test">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z{{}}]+" />
</xs:restriction>
</xs:simpleType>
</xsl:template>
If the XSLT program is generating an XML Schema, then you must escape the double curly braces:
<xsl:template match="/">
<xs:simpleType name="Test">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z\{{\}}]+" />
</xs:restriction>
</xs:simpleType>
</xsl:template>
/Roger
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]