<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.0"> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:simpleType name="InlineExpressionType"> <xs:restriction base="xs:string"/> </xs:simpleType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:simpleType name="ExpressionOrIDREFType"> <xs:union memberTypes="xs:IDREF InlineExpressionType xs:double"/> </xs:simpleType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="IdentifiableExpressionType"> <xs:simpleContent> <xs:extension base="InlineExpressionType"> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <!-- <xs:complexType name="ExpressionType" mixed="true"> <xs:annotation> <xs:documentation> A base type for expressions </xs:documentation> </xs:annotation> </xs:complexType> --> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <!-- <xs:complexType name="IdentifiableExpressionType" mixed="true"> <xs:annotation> <xs:documentation> Named (referenced), global scope, expression (may contain named constants and quantities) </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="ExpressionType"> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> --> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="ConstantType"> <xs:annotation> <xs:documentation> An anonymous, local scope, value </xs:documentation> </xs:annotation> <xs:attribute name="value" type="ExpressionOrIDREFType" use="required"/> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="IdentifiableConstantType"> <xs:annotation> <xs:documentation> Named (referenced), global scope, constant value </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="ConstantType"> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="QuantityType"> <xs:annotation> <xs:documentation> An anonymous quantity, local scope, with a unit, (possibly of a given type) quantity </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="ConstantType"> <!-- The unit attribute was originally required, but set to optional and is recommended to provide a default value in its derived type --> <xs:attribute name="unit" type="xs:string" use="optional"/> <xs:attribute name="type" type="xs:string" use="optional"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="IdentifiableQuantityType"> <xs:annotation> <xs:documentation> Named (referenced), global scope,(possibly of a given type) quantity </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="QuantityType"> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="ThreeVectorType"> <xs:annotation> <xs:documentation> An anonymous, 3 dimensional, local scope, vector of doubles </xs:documentation> </xs:annotation> <xs:attribute name="x" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="y" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="z" type="ExpressionOrIDREFType" default="0.0"/> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="IdentifiableThreeVectorType"> <xs:annotation> <xs:documentation> Named (referenced), 3 dimensional, global scope, vector of doubles </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="ThreeVectorType"> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="QuantityVectorType"> <xs:annotation> <xs:documentation> An anonymous, 3 dimensional, local scope, with a unit, (possibly of a given type) quantity vector </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="ThreeVectorType"> <!-- The unit attribute was originally required, but set to optional and is recommended to provide a default value in its derived type --> <xs:attribute name="unit" type="xs:string" use="optional"/> <xs:attribute name="type" type="xs:string" use="optional"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="IdentifiableQuantityVectorType"> <xs:annotation> <xs:documentation> Named (referenced), 3 dimensional, global scope, with a unit, (possibly of a given type) quantity vector </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="QuantityVectorType"> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="ReferenceType"> <xs:annotation> <xs:documentation> Local reference to an element of a named type </xs:documentation> </xs:annotation> <xs:attribute name="ref" type="xs:IDREF" use="required"/> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="ReferenceListType"> <xs:annotation> <xs:documentation> List of local references to a set of element of a named type </xs:documentation> </xs:annotation> <xs:attribute name="refs" type="xs:IDREFS" use="required"/> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> </xs:schema>