W3C

PrecisionDecimal Example

<xs:schema targetNamespace="http://www.w3.org/2002/ws/databinding/examples/6/09/" elementFormDefault="qualified">
<xs:element name="precisionDecimal" type="ex:PrecisionDecimal"/>
<xs:simpleType name="PrecisionDecimal">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="16"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="NaN"/>
<xs:enumeration value="-INF"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:element name="echoPrecisionDecimal">
<xs:complexType>
<xs:sequence>
<xs:element ref="ex:precisionDecimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

The example schema [PrecisionDecimal.xsd] has been classified as being an Advanced XML Schema Patterns for Databinding 1.0 conformant document as it only exhibits the following patterns:

Status Nodes Name XPath
basic TargetNamespace .[@targetNamespace]/ (., @targetNamespace)
basic QualifiedLocalElements .[@elementFormDefault = 'qualified']/ (@elementFormDefault)
basic UnqualifiedLocalAttributes .[not(@attributeFormDefault) or @attributeFormDefault = 'unqualified']/ (., @attributeFormDefault)
basic IdentifierName .//.[matches(@name, "^[A-Za-z_]([A-Za-z0-9_]0 31)$")]/ (@name)
basic GlobalElement ./xs:element[@name and @type and contains(@type, ':')]/ (., @name, @type)
basic GlobalSimpleType ./xs:simpleType[@name]/ (., @name)
basic StringEnumerationType .//xs:simpleType/xs:restriction[@base/resolve-QName(.,..) = xs:QName('xs:string') and xs:enumeration]/ (., @base, xs:enumeration/(., @value))
basic ComplexTypeSequence .//xs:complexType/xs:sequence/ (., xs:element/(., @name))
basic GlobalElementSequence ./xs:element[@name]/xs:complexType/xs:sequence[xs:element]/ (../../(., @name), .., ., xs:element/(., @name))
basic SequenceElement .//xs:sequence/xs:element/(.)
basic ElementTypeReference .//xs:element[@name and @type and namespace-uri-from-QName(resolve-QName(@type,.)) != 'http://www.w3.org/2001/XMLSchema' and contains(@type, ':')]/ (., @name, @type)
basic ElementReference .//xs:element[@ref and contains(@ref, ':')]/ (., @ref)
advanced UnionSimpleTypes .//xs:simpleType/xs:union[not(@memberTypes)]/xs:simpleType/ (.., .)
advanced SimpleTypeRenamed .//xs:simpleType/xs:restriction[@base and count(./*) = 0]/ (., @base)
advanced PrecisionDecimal .//xs:simpleType/xs:union[ xs:simpleType/xs:restriction[@base/resolve-QName(.,..) = xs:QName('xs:decimal')]/xs:totalDigits[@value ='16'] and xs:simpleType/xs:restriction[@base/resolve-QName(.,..) = xs:QName('xs:double')] and xs:simpleType/xs:restriction[@base/resolve-QName(.,..) = xs:QName('xs:string') and xs:enumeration/@value='NaN' and xs:enumeration/@value='-INF' and not(xs:enumeration[3])] and not(xs:simpleType[4] | xs:simpleType[@*]) ]/(., xs:simpleType/(., xs:restriction/(., @base, xs:totalDigits/(., @value), xs:enumeration/(., @value))))
advanced DecimalSimpleTypeTotalDigits .//xs:simpleType/xs:restriction[@base/resolve-QName(.,..) = xs:QName('xs:decimal') and xs:totalDigits/@value]/ (., @base, xs:totalDigits/(., @value))

To facilitate testing, the example schema element has been wrapped in the following descriptions:

The following valid instance documents are provided:

Instance Validity
PrecisionDecimal01 true
PrecisionDecimal02 true
PrecisionDecimal03 true

  <ex:precisionDecimal>1000.20</ex:precisionDecimal>
  <ex:precisionDecimal>NaN</ex:precisionDecimal>
  <ex:precisionDecimal>-INF</ex:precisionDecimal>

This document was produced by the W3C XML Schema Patterns for Databinding Working Group. Comments on this document may be sent to the public public-xsd-databinding-comments@w3.org mailing list (public archive).

Generated from examples.xml $Date$