1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2005/xpath-functions" xmlns:j="http://www.w3.org/2005/xpath-functions">
<!--
* This is a schema for the XML representation of JSON used as the target for the
* function fn:json-to-xml()
*
* The schema is made available under the terms of the W3C software notice and license
* at http://www.w3.org/Consortium/Legal/copyright-software-19980720
*
-->
<xs:element name="map" type="j:mapType">
<xs:unique name="unique-key">
<xs:selector xpath="*"/>
<xs:field xpath="@key"/>
<xs:field xpath="@escaped-key"/>
</xs:unique>
</xs:element>
<xs:element name="array" type="j:arrayType"/>
<xs:element name="string" type="j:stringType"/>
<xs:element name="number" type="j:numberType"/>
<xs:element name="boolean" type="j:booleanType"/>
<xs:element name="null" type="j:nullType"/>
<xs:complexType name="nullType">
<xs:sequence/>
<xs:anyAttribute processContents="skip" namespace="##other"/>
</xs:complexType>
<xs:complexType name="booleanType">
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:anyAttribute processContents="skip" namespace="##other"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="stringType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="escaped" type="xs:boolean" use="optional" default="false"/>
<xs:anyAttribute processContents="skip" namespace="##other"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="finiteNumberType">
<xs:restriction base="xs:double">
<!-- exclude positive and negative infinity, and NaN -->
<xs:minExclusive value="-INF"/>
<xs:maxExclusive value="INF"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="numberType">
<xs:simpleContent>
<xs:extension base="j:finiteNumberType">
<xs:anyAttribute processContents="skip" namespace="##other"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="arrayType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="j:map"/>
<xs:element ref="j:array"/>
<xs:element ref="j:string"/>
<xs:element ref="j:number"/>
<xs:element ref="j:boolean"/>
<xs:element ref="j:null"/>
</xs:choice>
<xs:anyAttribute processContents="skip" namespace="##other"/>
</xs:complexType>
<xs:complexType name="mapWithinMapType">
<xs:complexContent>
<xs:extension base="j:mapType">
<xs:attributeGroup ref="j:key-group"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="arrayWithinMapType">
<xs:complexContent>
<xs:extension base="j:arrayType">
<xs:attributeGroup ref="j:key-group"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="stringWithinMapType">
<xs:simpleContent>
<xs:extension base="j:stringType">
<xs:attributeGroup ref="j:key-group"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="numberWithinMapType">
<xs:simpleContent>
<xs:extension base="j:numberType">
<xs:attributeGroup ref="j:key-group"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="booleanWithinMapType">
<xs:simpleContent>
<xs:extension base="j:booleanType">
<xs:attributeGroup ref="j:key-group"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="nullWithinMapType">
<xs:attributeGroup ref="j:key-group"/>
</xs:complexType>
<xs:complexType name="mapType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="map" type="j:mapWithinMapType">
<xs:unique name="unique-key-2">
<xs:selector xpath="*"/>
<xs:field xpath="@key"/>
</xs:unique>
</xs:element>
<xs:element name="array" type="j:arrayWithinMapType"/>
<xs:element name="string" type="j:stringWithinMapType"/>
<xs:element name="number" type="j:numberWithinMapType"/>
<xs:element name="boolean" type="j:booleanWithinMapType"/>
<xs:element name="null" type="j:nullWithinMapType"/>
</xs:choice>
<xs:anyAttribute processContents="skip" namespace="##other"/>
</xs:complexType>
<xs:attributeGroup name="key-group">
<xs:attribute name="key" type="xs:string" use="required"/>
<xs:attribute name="escaped-key" type="xs:boolean" use="optional" default="false"/>
</xs:attributeGroup>
</xs:schema>
|