<xs:schema xmlns=“schemas.microsoft.com/3dmanufacturing/core/2015/02” xmlns:xs=“www.w3.org/2001/XMLSchema”
xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://schemas.microsoft.com/3dmanufacturing/core/2015/02" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all"> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation= "<%= SchemaFiles::SchemaLocation %>" /> <xs:annotation> <xs:documentation><![CDATA[ Schema notes:
Items within this schema follow a simple naming convention of appending a prefix indicating the type of element for references:
Unprefixed: Element names CT_: Complex types ST_: Simple types ]]></xs:documentation> </xs:annotation> <!-- Complex Types --> <xs:complexType name="CT_Model"> <xs:sequence> <xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="resources"/> <xs:element ref="build"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="unit" type="ST_Unit" default="millimeter"/> <xs:attribute ref="xml:lang"/> <xs:attribute name="requiredextensions" type="xs:string"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Resources"> <xs:sequence> <xs:element ref="basematerials" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="object" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Build"> <xs:sequence> <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_BaseMaterials"> <xs:sequence> <xs:element ref="base" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="ST_ResourceID" use="required"/> </xs:complexType> <xs:complexType name="CT_Base"> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="displaycolor" type="ST_ColorValue" use="required"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Object"> <xs:choice> <xs:element ref="mesh"/> <xs:element ref="components"/> </xs:choice> <xs:attribute name="id" type="ST_ResourceID" use="required"/> <xs:attribute name="type" type="ST_ObjectType" default="model"/> <xs:attribute name="matid" type="ST_ResourceID"/> <xs:attribute name="matindex" type="ST_ResourceIndex"/> <xs:attribute name="partnumber" type="xs:string"/> <xs:attribute name="name" type="xs:string"/> <xs:attribute name="pid" type="ST_ResourceID"/> <xs:attribute name="pindex" type="ST_ResourceIndex"/> <xs:attribute name="thumbnail" type="ST_UriReference" /> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Mesh"> <xs:sequence> <xs:element ref="vertices"/> <xs:element ref="triangles"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="CT_Vertices"> <xs:sequence> <xs:element ref="vertex" minOccurs="3" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="CT_Vertex"> <xs:attribute name="x" type="ST_Number" use="required"/> <xs:attribute name="y" type="ST_Number" use="required"/> <xs:attribute name="z" type="ST_Number" use="required"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Triangles"> <xs:sequence> <xs:element ref="triangle" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="CT_Triangle"> <xs:attribute name="v1" type="ST_ResourceIndex" use="required"/> <xs:attribute name="v2" type="ST_ResourceIndex" use="required"/> <xs:attribute name="v3" type="ST_ResourceIndex" use="required"/> <xs:attribute name="p1" type="ST_ResourceIndex"/> <xs:attribute name="p2" type="ST_ResourceIndex"/> <xs:attribute name="p3" type="ST_ResourceIndex"/> <xs:attribute name="pid" type="ST_ResourceID"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Components"> <xs:sequence> <xs:element ref="component" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="CT_Component"> <xs:attribute name="objectid" type="ST_ResourceID" use="required"/> <xs:attribute name="transform" type="ST_Matrix3D"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="CT_Metadata" mixed="true"> <xs:attribute name="name" type="xs:QName" use="required"/> </xs:complexType> <xs:complexType name="CT_Item"> <xs:attribute name="objectid" type="ST_ResourceID" use="required"/> <xs:attribute name="transform" type="ST_Matrix3D"/> <xs:attribute name="itemref" type="xs:ID"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <!-- Simple Types --> <xs:simpleType name="ST_Unit"> <xs:restriction base="xs:string"> <xs:enumeration value="micron"/> <xs:enumeration value="millimeter"/> <xs:enumeration value="centimeter"/> <xs:enumeration value="inch"/> <xs:enumeration value="foot"/> <xs:enumeration value="meter"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_ColorValue"> <xs:restriction base="xs:string"> <xs:pattern value="#[0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f]([0-9|A-F|a-f][0-9|A-F|a-f])?"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_UriReference"> <xs:restriction base="xs:anyURI"> <xs:pattern value="/.*"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_Matrix3D"> <xs:restriction base="xs:string"> <xs:pattern value="((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?)"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_Number"> <xs:restriction base="xs:double"> <xs:whiteSpace value="collapse"/> <xs:pattern value="((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?)"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_ResourceID"> <xs:restriction base="xs:positiveInteger"> <xs:maxExclusive value="2147483648"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_ResourceIndex"> <xs:restriction base="xs:nonNegativeInteger"> <xs:maxExclusive value="2147483648"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="ST_ObjectType"> <xs:restriction base="xs:string"> <xs:enumeration value="model"/> <xs:enumeration value="solidsupport"/> <xs:enumeration value="support"/> <xs:enumeration value="other"/> </xs:restriction>
</xs:simpleType>
<!-- Elements -->
<xs:element name=“model” type=“CT_Model”/> <xs:element name=“resources” type=“CT_Resources”/> <xs:element name=“build” type=“CT_Build”/> <xs:element name=“basematerials” type=“CT_BaseMaterials”/> <xs:element name=“base” type=“CT_Base”/> <xs:element name=“object” type=“CT_Object”/> <xs:element name=“mesh” type=“CT_Mesh”/> <xs:element name=“vertices” type=“CT_Vertices”/> <xs:element name=“vertex” type=“CT_Vertex”/> <xs:element name=“triangles” type=“CT_Triangles”/> <xs:element name=“triangle” type=“CT_Triangle”/> <xs:element name=“components” type=“CT_Components”/> <xs:element name=“component” type=“CT_Component”/> <xs:element name=“metadata” type=“CT_Metadata”/> <xs:element name=“item” type=“CT_Item”/>
</xs:schema>