<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://schemas.microsoft.com/metro/2005/02/rp" 
           xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:x="http://schemas.microsoft.com/metro/2005/02/rp/resourcedictionary-key" 
           targetNamespace="http://schemas.microsoft.com/metro/2005/02/rp" elementFormDefault="qualified">
	<xs:import namespace="http://schemas.microsoft.com/metro/2005/02/rp/resourcedictionary-key"/>
	<xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
	<!-- Names used for types and groups:
 
		ST_*		simpleType
		CT_*		complexType
		G_*			group
		AG_*		attributeGroup
	
-->
	<!-- Individual double number pattern
	"[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*"
-->
	<!-- Complex Types -->
	<xs:complexType name="CT_MatrixTransform">
		<xs:attributeGroup ref="AG_MatrixTransform"/>
	</xs:complexType>
	<xs:complexType name="CT_SolidColorBrush">
		<xs:attributeGroup ref="AG_Brush"/>
		<xs:attributeGroup ref="AG_SolidColorBrush"/>
	</xs:complexType>
	<xs:complexType name="CT_ImageBrush">
		<xs:sequence>
			<xs:element ref="ImageBrush.Transform" minOccurs="0"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Brush"/>
		<xs:attributeGroup ref="AG_TileBrush"/>
		<xs:attributeGroup ref="AG_ImageBrush"/>
	</xs:complexType>
	<xs:complexType name="CT_VisualBrush">
		<xs:sequence>
			<xs:element ref="VisualBrush.Transform" minOccurs="0"/>
			<xs:element ref="VisualBrush.Visual"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Brush"/>
		<xs:attributeGroup ref="AG_TileBrush"/>
		<xs:attributeGroup ref="AG_VisualBrush"/>
	</xs:complexType>
	<xs:complexType name="CT_LinearGradientBrush">
		<xs:sequence>
			<xs:element ref="LinearGradientBrush.Transform" minOccurs="0"/>
			<xs:element ref="LinearGradientBrush.GradientStops"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Brush"/>
		<xs:attributeGroup ref="AG_GradientBrush"/>
		<xs:attributeGroup ref="AG_LinearGradientBrush"/>
	</xs:complexType>
	<xs:complexType name="CT_RadialGradientBrush">
		<xs:sequence>
			<xs:element ref="RadialGradientBrush.Transform" minOccurs="0"/>
			<xs:element ref="RadialGradientBrush.GradientStops"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Brush"/>
		<xs:attributeGroup ref="AG_GradientBrush"/>
		<xs:attributeGroup ref="AG_RadialGradientBrush"/>
	</xs:complexType>
	<!--	Will be available in next milestone
	<xs:complexType name="CT_GradientStopCollection">
	    <xs:annotation><xs:appinfo>CT_GradientStopCollection</xs:appinfo></xs:annotation>
		<xs:sequence>
			<xs:element ref="GradientStop" minOccurs="2" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="x:Key"/>
	</xs:complexType>
-->
	<xs:complexType name="CT_GradientStop">
		<xs:attributeGroup ref="AG_GradientStop"/>
	</xs:complexType>
	<xs:complexType name="CT_CombinedGeometry">
		<xs:sequence>
			<xs:element ref="CombinedGeometry.Transform" minOccurs="0"/>
			<xs:element ref="CombinedGeometry.Geometry1" minOccurs="0"/>
			<xs:element ref="CombinedGeometry.Geometry2" minOccurs="0"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_CombinedGeometry"/>
	</xs:complexType>
	<xs:complexType name="CT_GeometryGroup">
		<xs:sequence>
			<xs:element ref="GeometryGroup.Transform" minOccurs="0"/>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="GeometryGroup"/>
				<xs:element ref="CombinedGeometry"/>
				<xs:element ref="PathGeometry"/>
			</xs:choice>
		</xs:sequence>
		<xs:attributeGroup ref="AG_GeometryGroup"/>
	</xs:complexType>
	<xs:complexType name="CT_PathGeometry">
		<xs:sequence>
			<xs:element ref="PathGeometry.Transform" minOccurs="0"/>
			<xs:element ref="PathFigure" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_PathGeometry"/>
	</xs:complexType>
	<xs:complexType name="CT_Glyphs">
		<xs:sequence>
			<xs:element ref="Glyphs.RenderTransform" minOccurs="0"/>
			<xs:element ref="Glyphs.Clip" minOccurs="0"/>
			<xs:element ref="Glyphs.OpacityMask" minOccurs="0"/>
			<xs:element ref="Glyphs.Fill" minOccurs="0"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Glyphs"/>
	</xs:complexType>
	<xs:complexType name="CT_Path">
		<xs:sequence>
			<xs:element ref="Path.RenderTransform" minOccurs="0"/>
			<xs:element ref="Path.Clip" minOccurs="0"/>
			<xs:element ref="Path.OpacityMask" minOccurs="0"/>
			<xs:element ref="Path.Fill" minOccurs="0"/>
			<xs:element ref="Path.Stroke" minOccurs="0"/>
			<xs:element ref="Path.Data" minOccurs="0"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Path"/>
	</xs:complexType>
	<xs:complexType name="CT_PathFigure">
		<xs:sequence>
			<xs:element ref="StartSegment"/>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="ArcSegment"/>
				<xs:element ref="BezierSegment"/>
				<xs:element ref="LineSegment"/>
				<xs:element ref="PolyBezierSegment"/>
				<xs:element ref="PolyLineSegment"/>
				<xs:element ref="PolyQuadraticBezierSegment"/>
				<xs:element ref="QuadraticBezierSegment"/>
			</xs:choice>
			<xs:element ref="CloseSegment" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CT_StartSegment">
		<xs:attributeGroup ref="AG_StartSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_ArcSegment">
		<xs:attributeGroup ref="AG_ArcSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_BezierSegment">
		<xs:attributeGroup ref="AG_BezierSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_LineSegment">
		<xs:attributeGroup ref="AG_LineSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_PolyQuadraticBezierSegment">
		<xs:attributeGroup ref="AG_PolyQuadraticBezierSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_QuadraticBezierSegment">
		<xs:attributeGroup ref="AG_QuadraticBezierSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_PolyLineSegment">
		<xs:attributeGroup ref="AG_PolyLineSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_PolyBezierSegment">
		<xs:attributeGroup ref="AG_PolyBezierSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_CloseSegment">
		<xs:attributeGroup ref="AG_CloseSegment"/>
	</xs:complexType>
	<xs:complexType name="CT_Canvas">
		<xs:sequence>
			<xs:element ref="Canvas.Resources" minOccurs="0"/>
			<xs:element ref="Canvas.RenderTransform" minOccurs="0"/>
			<xs:element ref="Canvas.Clip" minOccurs="0"/>
			<xs:element ref="Canvas.OpacityMask" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="Canvas"/>
				<xs:element ref="Glyphs"/>
				<xs:element ref="Path"/>
			</xs:choice>
		</xs:sequence>
		<xs:attributeGroup ref="AG_Canvas"/>
	</xs:complexType>
	<xs:complexType name="CT_ResourceDictionary">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="Canvas"/>
			<xs:element ref="Glyphs"/>
			<xs:element ref="Path"/>
			<!--	Will be available in next milestone
			<xs:element ref="GradientStopCollection"/>
			-->
			<xs:element ref="SolidColorBrush"/>
			<xs:element ref="LinearGradientBrush"/>
			<xs:element ref="RadialGradientBrush"/>
			<xs:element ref="VisualBrush"/>
			<xs:element ref="ImageBrush"/>
			<xs:element ref="MatrixTransform"/>
			<xs:element ref="CombinedGeometry"/>
			<xs:element ref="GeometryGroup"/>
			<xs:element ref="PathGeometry"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CT_FixedPage">
		<xs:sequence>
			<xs:element ref="FixedPage.Resources" minOccurs="0"/>
			<xs:element ref="FixedPage.RenderTransform" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="Canvas"/>
				<xs:element ref="Glyphs"/>
				<xs:element ref="Path"/>
			</xs:choice>
		</xs:sequence>
		<xs:attributeGroup ref="AG_FixedPage"/>
	</xs:complexType>
	<xs:complexType name="CT_FixedDocument">
		<xs:sequence>
			<xs:element ref="PageContent" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CT_PageContent">
		<xs:sequence>
			<xs:element ref="PageContent.LinkTargets" minOccurs="0"/>
		</xs:sequence>
		<xs:attributeGroup ref="AG_PageContent"/>
	</xs:complexType>
	<xs:complexType name="CT_FixedDocumentSequence">
		<xs:sequence>
			<xs:element ref="DocumentReference" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CT_DocumentReference">
		<xs:attributeGroup ref="AG_DocumentReference"/>
	</xs:complexType>
	<xs:complexType name="CT_LinkTarget">
		<xs:attributeGroup ref="AG_LinkTarget"/>
	</xs:complexType>
	<xs:complexType name="CT_CP_LinkTargets">
		<xs:sequence>
			<xs:element ref="LinkTarget" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CT_CP_Transform">
		<xs:sequence>
			<xs:element ref="MatrixTransform"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CT_CP_Visual">
		<xs:choice>
			<xs:element ref="Canvas"/>
			<xs:element ref="Glyphs"/>
			<xs:element ref="Path"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CT_CP_GradientStops">
		<xs:sequence>
			<xs:element ref="GradientStop" minOccurs="2" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CT_CP_Geometry">
		<xs:choice>
			<xs:element ref="GeometryGroup"/>
			<xs:element ref="CombinedGeometry"/>
			<xs:element ref="PathGeometry"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CT_CP_Brush">
		<xs:choice>
			<xs:element ref="SolidColorBrush"/>
			<xs:element ref="ImageBrush"/>
			<xs:element ref="VisualBrush"/>
			<xs:element ref="LinearGradientBrush"/>
			<xs:element ref="RadialGradientBrush"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CT_CP_Resources">
		<xs:sequence minOccurs="0">
			<xs:element ref="ResourceDictionary"/>
		</xs:sequence>
	</xs:complexType>
	<!-- Individual double number pattern
	"[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*"
    -->
	<!-- Root elements -->
	<xs:element name="MatrixTransform" type="CT_MatrixTransform"/>
	<xs:element name="SolidColorBrush" type="CT_SolidColorBrush"/>
	<xs:element name="ImageBrush" type="CT_ImageBrush"/>
	<xs:element name="VisualBrush" type="CT_VisualBrush"/>
	<xs:element name="LinearGradientBrush" type="CT_LinearGradientBrush"/>
	<xs:element name="RadialGradientBrush" type="CT_RadialGradientBrush"/>
	<xs:element name="Glyphs" type="CT_Glyphs"/>
	<xs:element name="Path" type="CT_Path"/>
	<xs:element name="Canvas" type="CT_Canvas"/>
	<xs:element name="GradientStop" type="CT_GradientStop"/>
	<!--	Will be available in next milestone
	<xs:element name="GradientStopCollection" type="CT_GradientStopCollection">
	    <xs:annotation>
	        <xs:appinfo>GradientStopCollection</xs:appinfo>
	    </xs:annotation>
	</xs:element>
	-->
	<xs:element name="ResourceDictionary" type="CT_ResourceDictionary"/>
	<xs:element name="CombinedGeometry" type="CT_CombinedGeometry"/>
	<xs:element name="GeometryGroup" type="CT_GeometryGroup"/>
	<xs:element name="PathGeometry" type="CT_PathGeometry"/>
	<xs:element name="PathFigure" type="CT_PathFigure"/>
	<xs:element name="StartSegment" type="CT_StartSegment"/>
	<xs:element name="PolyLineSegment" type="CT_PolyLineSegment"/>
	<xs:element name="LineSegment" type="CT_LineSegment"/>
	<xs:element name="ArcSegment" type="CT_ArcSegment"/>
	<xs:element name="BezierSegment" type="CT_BezierSegment"/>
	<xs:element name="PolyBezierSegment" type="CT_PolyBezierSegment"/>
	<xs:element name="PolyQuadraticBezierSegment" type="CT_PolyQuadraticBezierSegment"/>
	<xs:element name="QuadraticBezierSegment" type="CT_QuadraticBezierSegment"/>
	<xs:element name="CloseSegment" type="CT_CloseSegment"/>
	<xs:element name="FixedPage" type="CT_FixedPage"/>
	<xs:element name="FixedDocument" type="CT_FixedDocument"/>
	<xs:element name="PageContent" type="CT_PageContent"/>
	<xs:element name="FixedDocumentSequence" type="CT_FixedDocumentSequence"/>
	<xs:element name="DocumentReference" type="CT_DocumentReference"/>
	<xs:element name="LinkTarget" type="CT_LinkTarget"/>
	<xs:element name="PageContent.LinkTargets" type="CT_CP_LinkTargets"/>
	<xs:element name="ImageBrush.Transform" type="CT_CP_Transform"/>
	<xs:element name="VisualBrush.Transform" type="CT_CP_Transform"/>
	<xs:element name="LinearGradientBrush.Transform" type="CT_CP_Transform"/>
	<xs:element name="RadialGradientBrush.Transform" type="CT_CP_Transform"/>
	<xs:element name="CombinedGeometry.Transform" type="CT_CP_Transform"/>
	<xs:element name="GeometryGroup.Transform" type="CT_CP_Transform"/>
	<xs:element name="PathGeometry.Transform" type="CT_CP_Transform"/>
	<xs:element name="Glyphs.RenderTransform" type="CT_CP_Transform"/>
	<xs:element name="Path.RenderTransform" type="CT_CP_Transform"/>
	<xs:element name="Canvas.RenderTransform" type="CT_CP_Transform"/>
	<xs:element name="FixedPage.RenderTransform" type="CT_CP_Transform"/>
	<xs:element name="VisualBrush.Visual" type="CT_CP_Visual"/>
	<xs:element name="LinearGradientBrush.GradientStops" type="CT_CP_GradientStops"/>
	<xs:element name="RadialGradientBrush.GradientStops" type="CT_CP_GradientStops"/>
	<xs:element name="Glyphs.Clip" type="CT_CP_Geometry"/>
	<xs:element name="Path.Clip" type="CT_CP_Geometry"/>
	<xs:element name="Canvas.Clip" type="CT_CP_Geometry"/>
	<xs:element name="Glyphs.OpacityMask" type="CT_CP_Brush"/>
	<xs:element name="Path.OpacityMask" type="CT_CP_Brush"/>
	<xs:element name="Canvas.OpacityMask" type="CT_CP_Brush"/>
	<xs:element name="Glyphs.Fill" type="CT_CP_Brush"/>
	<xs:element name="Path.Fill" type="CT_CP_Brush"/>
	<xs:element name="CombinedGeometry.Geometry1" type="CT_CP_Geometry"/>
	<xs:element name="CombinedGeometry.Geometry2" type="CT_CP_Geometry"/>
	<xs:element name="Path.Data" type="CT_CP_Geometry"/>
	<xs:element name="Path.Stroke" type="CT_CP_Brush"/>
	<xs:element name="Canvas.Resources" type="CT_CP_Resources"/>
	<xs:element name="FixedPage.Resources" type="CT_CP_Resources"/>
	<xs:attributeGroup name="AG_GradientStop">
		<xs:attribute name="Color" type="ST_Color" use="required"/>
		<xs:attribute name="Offset" type="xs:double" use="required"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_Brush">
		<xs:attribute name="Opacity" type="ST_ZeroOne" default="1.0"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_TileBrush">
		<xs:attribute name="Transform" type="ST_RscRefMatrix"/>
		<xs:attribute name="Viewbox" type="ST_ViewBox" use="required"/>
		<xs:attribute name="Viewport" type="ST_ViewBox" use="required"/>
		<xs:attribute name="Stretch" type="ST_Stretch" use="required" fixed="Fill"/>
		<xs:attribute name="TileMode" type="ST_TileMode" default="None"/>
		<xs:attribute name="ViewboxUnits" type="ST_ViewUnits" use="required" fixed="Absolute"/>
		<xs:attribute name="ViewportUnits" type="ST_ViewUnits" use="required" fixed="Absolute"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_VisualBrush">
		<xs:attribute name="Visual" type="ST_RscRef"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_GradientBrush">
		<xs:attribute name="ColorInterpolationMode" type="ST_ColorInterpolationMode" default="SRgbLinearInterpolation"/>
		<!--	Will be available in next milestone
		<xs:attribute name="GradientStops" type="ST_RscRef">
			<xs:annotation>
				<xs:appinfo>GradientStops</xs:appinfo>
			</xs:annotation>
		</xs:attribute>
		-->
		<xs:attribute name="SpreadMethod" type="ST_SpreadMethod" default="Pad"/>
		<xs:attribute name="MappingMode" type="ST_MappingMode" use="required" fixed="Absolute"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_SolidColorBrush">
		<xs:attribute name="Color" type="ST_Color" use="required"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_ImageBrush">
		<xs:attribute name="ImageSource" type="xs:anyURI" use="required"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_LinearGradientBrush">
		<xs:attribute name="Transform" type="ST_RscRefMatrix"/>
		<xs:attribute name="StartPoint" type="ST_Point" use="required"/>
		<xs:attribute name="EndPoint" type="ST_Point" use="required"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_RadialGradientBrush">
		<xs:attribute name="Transform" type="ST_RscRefMatrix"/>
		<xs:attribute name="Center" type="ST_Point" use="required"/>
		<xs:attribute name="GradientOrigin" type="ST_Point" use="required"/>
		<xs:attribute name="RadiusX" type="ST_GEZero" use="required"/>
		<xs:attribute name="RadiusY" type="ST_GEZero" use="required"/>
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_CombinedGeometry">
		<xs:attribute name="CombineMode" type="ST_CombineMode" use="required"/>
		<xs:attribute name="Geometry1" type="ST_RscRefAbbrGeom"/>
		<xs:attribute name="Geometry2" type="ST_RscRefAbbrGeom"/>
		<xs:attribute name="Transform" type="ST_RscRefMatrix"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_GeometryGroup">
		<xs:attribute name="FillRule" type="ST_FillRule" default="EvenOdd"/>
		<xs:attribute name="Transform" type="ST_RscRefMatrix"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_PathGeometry">
		<xs:attribute name="FillRule" type="ST_FillRule" default="EvenOdd"/>
		<xs:attribute name="Transform" type="ST_RscRefMatrix"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_StartSegment">
		<xs:attribute name="Point" type="ST_Point" use="required"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_LineSegment">
		<xs:attribute name="Point" type="ST_Point" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_PolyLineSegment">
		<xs:attribute name="Points" type="ST_Points" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_ArcSegment">
		<xs:attribute name="Point" type="ST_Point" use="required"/>
		<xs:attribute name="Size" type="ST_Point" use="required"/>
		<xs:attribute name="XRotation" type="xs:double" use="required"/>
		<xs:attribute name="LargeArc" type="ST_Boolean" use="required"/>
		<xs:attribute name="SweepFlag" type="ST_Boolean" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_PolyBezierSegment">
		<xs:attribute name="Points" type="ST_Points" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_PolyQuadraticBezierSegment">
		<xs:attribute name="Points" type="ST_Points" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_QuadraticBezierSegment">
		<xs:attribute name="Point1" type="ST_Point" use="required"/>
		<xs:attribute name="Point2" type="ST_Point" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_BezierSegment">
		<xs:attribute name="Point1" type="ST_Point" use="required"/>
		<xs:attribute name="Point2" type="ST_Point" use="required"/>
		<xs:attribute name="Point3" type="ST_Point" use="required"/>
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_CloseSegment">
		<xs:attribute name="IsStroked" type="ST_Boolean" default="true"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_Glyphs">
		<xs:attribute name="BidiLevel" type="xs:integer" default="0"/>
		<xs:attribute name="CaretStops" type="ST_CaretStops"/>
		<xs:attribute name="DeviceFontID" type="xs:string"/>
		<xs:attribute name="Fill" type="ST_RscRefColor"/>
		<xs:attribute name="FontRenderingEmSize" type="ST_GEZero" use="required"/>
		<xs:attribute name="FontUri" type="xs:anyURI" use="required"/>
		<xs:attribute name="OriginX" type="xs:double" use="required"/>
		<xs:attribute name="OriginY" type="xs:double" use="required"/>
		<xs:attribute name="IsSideways" type="ST_Boolean" default="false"/>
		<xs:attribute name="Indices" type="ST_Indices"/>
		<xs:attribute name="UnicodeString" type="ST_UnicodeString"/>
		<xs:attribute name="StyleSimulations" type="ST_StyleSimulations" default="None"/>
		<xs:attribute name="RenderTransform" type="ST_RscRefMatrix"/>
		<xs:attribute name="Clip" type="ST_RscRefAbbrGeom"/>
		<xs:attribute name="Opacity" type="ST_ZeroOne" default="1.0"/>
		<xs:attribute name="OpacityMask" type="ST_RscRef"/>
		<xs:attribute name="Name" type="ST_Name"/>
		<xs:attribute name="FixedPage.NavigateUri" type="xs:anyURI"/>
		<xs:attribute ref="xml:lang"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_Path">
		<xs:attribute name="Data" type="ST_RscRefAbbrGeom"/>
		<xs:attribute name="Fill" type="ST_RscRefColor"/>
		<xs:attribute name="FillRule" type="ST_FillRule" default="EvenOdd"/>
		<xs:attribute name="RenderTransform" type="ST_RscRefMatrix"/>
		<xs:attribute name="Clip" type="ST_RscRefAbbrGeom"/>
		<xs:attribute name="Opacity" type="ST_ZeroOne" default="1.0"/>
		<xs:attribute name="OpacityMask" type="ST_RscRef"/>
		<xs:attribute name="Stroke" type="ST_RscRefColor"/>
		<xs:attribute name="StrokeDashArray" type="ST_EvenArray"/>
		<xs:attribute name="StrokeDashCap" type="ST_DashCap" default="Flat"/>
		<xs:attribute name="StrokeDashOffset" type="xs:double" default="0.0"/>
		<xs:attribute name="StrokeEndLineCap" type="ST_LineCap" default="Flat"/>
		<xs:attribute name="StrokeStartLineCap" type="ST_LineCap" default="Flat"/>
		<xs:attribute name="StrokeLineJoin" type="ST_LineJoin" default="Miter"/>
		<xs:attribute name="StrokeMiterLimit" type="ST_GEOne" default="10.0"/>
		<xs:attribute name="StrokeThickness" type="ST_GEZero" default="1.0"/>
		<xs:attribute name="Name" type="ST_Name"/>
		<xs:attribute name="FixedPage.NavigateUri" type="xs:anyURI"/>
		<xs:attribute ref="xml:lang"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_Canvas">
		<xs:attribute name="RenderTransform" type="ST_RscRefMatrix"/>
		<xs:attribute name="Clip" type="ST_RscRefAbbrGeom"/>
		<xs:attribute name="Opacity" type="ST_ZeroOne" default="1.0"/>
		<xs:attribute name="OpacityMask" type="ST_RscRef"/>
		<xs:attribute name="Name" type="ST_Name"/>
		<xs:attribute name="FixedPage.NavigateUri" type="xs:anyURI"/>
		<xs:attribute ref="xml:lang"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_PageContent">
		<xs:attribute name="Source" type="xs:anyURI" use="required"/>
		<xs:attribute name="Width" type="ST_GEOne"/>
		<xs:attribute name="Height" type="ST_GEOne"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_LinkTarget">
		<xs:attribute name="Name" type="ST_Name" use="required"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_DocumentReference">
		<xs:attribute name="Source" type="xs:anyURI" use="required"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_MatrixTransform">
		<xs:attribute name="Matrix" type="ST_MatrixBare" use="required"/>
	<!-- Just comment out Key for now
		<xs:attribute ref="x:Key"/>
-->
	</xs:attributeGroup>
	<xs:attributeGroup name="AG_FixedPage">
		<xs:attribute name="Width" type="ST_GEOne" use="required"/>
		<xs:attribute name="Height" type="ST_GEOne" use="required"/>
		<xs:attribute name="ContentBox" type="ST_ContentBox"/>
		<xs:attribute name="BleedBox" type="ST_BleedBox"/>
		<xs:attribute name="RenderTransform" type="ST_Matrix"/>
	<!-- Just make lang optional for now -->
		<xs:attribute ref="xml:lang"/>
		<xs:attribute name="Name" type="ST_Name"/>
		<!--xs:anyAttribute namespace="http://microsoft.com/schemas/mmcf/xaml/2005"/-->
	</xs:attributeGroup>
	<!-- Simple data types -->
	<!-- A Name (ID with pattern restriction according to Metro spec) -->
	<xs:simpleType name="ST_Name">
		<xs:restriction base="xs:ID">
			<xs:pattern value="(\p{Lu}|\p{Ll}|\p{Lo}|\p{Lt}|\p{Nl})(\p{Lu}|\p{Ll}|\p{Lo}|\p{Lt}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Lm})*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Boolean with true and false only (no 0 or 1) -->
	<xs:simpleType name="ST_Boolean">
		<xs:restriction base="xs:boolean">
			<xs:pattern value="true|false"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- real number from 0.0 to 1.0 inclusive -->
	<xs:simpleType name="ST_ZeroOne">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="0.0"/>
			<xs:maxInclusive value="1.0"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- positive real number -->
	<xs:simpleType name="ST_GEZero">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="0.0"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- positive real number, equal or greater than one -->
	<xs:simpleType name="ST_GEOne">
		<xs:restriction base="xs:double">
			<xs:minInclusive value="1.0"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Point: 2 numbers, separated by , and arbitrary whitespace -->
	<xs:simpleType name="ST_Point">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Points: List of ST_Point, separated by arbitrary whitespace -->
	<xs:simpleType name="ST_Points">
		<xs:restriction base="xs:string">
			<xs:pattern value="([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*)+"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- EvenArray: List with even number of entries of numbers.  Whitespace between all values is optional; it should be mandatory between values or they can run into each other -->
	<xs:simpleType name="ST_EvenArray">
		<xs:restriction base="xs:string">
			<xs:pattern value="([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- ViewBox: 4 numbers, separated by , and arbitrary whitespace. Second number pair must be non-negative -->
	<xs:simpleType name="ST_ViewBox">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- ContentBox: 4 non-negative numbers, separated by commas and arbitrary whitespace -->
	<xs:simpleType name="ST_ContentBox">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- BleedBox: 4 numbers, separated by commas and arbitrary whitespace. First pair may have negative numbers -->
	<xs:simpleType name="ST_BleedBox">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Bare Matrix form: 6 numbers separated by , and arbitrary whitespace -->
	<xs:simpleType name="ST_MatrixBare">
		<xs:restriction base="xs:string">
			<xs:pattern value="(([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,){5})([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*)"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Compact Matrix form for TC: "matrix(" + 6 numbers separated by , and arbitrary whitespace + ")" -->
	<xs:simpleType name="ST_Matrix">
		<xs:restriction base="xs:string">
			<xs:pattern value="matrix\((([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,){5})([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*)\)"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Color: 6 or 8 hex digits -->
	<xs:simpleType name="ST_Color">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*#([0-9a-fA-F]{2})?[0-9a-fA-F]{6}"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Indices grammar for Glyphs.CaretStops -->
	<xs:simpleType name="ST_CaretStops">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*[0-9A-Fa-f]*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Indices grammar for Glyphs.Indices -->
	<xs:simpleType name="ST_Indices">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*(\([1-9]+(:[1-9]+)?\))?[0-9]*(,\-?[0-9]*(\.([0-9])+)?)?(,\-?[0-9]*(\.([0-9])+)?)?(,\-?[0-9]*(\.([0-9])+)?)?(;((\([1-9]+(:[1-9]+)?\))?[0-9]*(,\-?[0-9]*(\.([0-9])+)?)?(,\-?[0-9]*(\.([0-9])+)?)?(,\-?[0-9]*(\.([0-9])+)?)?)?)*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- UnicodeString grammar -->
	<xs:simpleType name="ST_UnicodeString">
		<xs:restriction base="xs:string">
			<xs:pattern value="(([^\{]|(\{\})).*)?"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Abbreviated Geometry grammar for Path.Data -->
	<xs:simpleType name="ST_AbbrGeom">
		<xs:restriction base="xs:string">
			<xs:pattern value="(((M|m)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)[\s]*)|((L|l)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((H|h)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((V|v)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*)|((Q|q)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){2})+[\s]*)|((S|s)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){2})+[\s]*)|((A|a)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]+[0-1][\s]+[0-1][\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((Z|z)[\s]*))*"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Resource reference -->
	<xs:simpleType name="ST_RscRef">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\s]*\{StaticResource[\s]+[\S]+\}"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Resource reference OR Color -->
	<xs:simpleType name="ST_RscRefColor">
		<xs:union memberTypes="ST_Color ST_RscRef"/>
	</xs:simpleType>
	<!-- Resource reference OR Compact Matrix-->
	<xs:simpleType name="ST_RscRefMatrix">
		<xs:union memberTypes="ST_Matrix ST_RscRef"/>
	</xs:simpleType>
	<!-- Resource reference OR AbbrGeom-->
	<xs:simpleType name="ST_RscRefAbbrGeom">
		<xs:union memberTypes="ST_AbbrGeom ST_RscRef"/>
	</xs:simpleType>
	<!-- Dash Cap enumeration -->
	<xs:simpleType name="ST_DashCap">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Flat"/>
			<xs:enumeration value="Round"/>
			<xs:enumeration value="Triangle"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Line Cap enumeration -->
	<xs:simpleType name="ST_LineCap">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Flat"/>
			<xs:enumeration value="Square"/>
			<xs:enumeration value="Round"/>
			<xs:enumeration value="Triangle"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Line Join enumeration -->
	<xs:simpleType name="ST_LineJoin">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Miter"/>
			<xs:enumeration value="Bevel"/>
			<xs:enumeration value="Round"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Tile Mode enumeration -->
	<xs:simpleType name="ST_TileMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="None"/>
			<xs:enumeration value="Tile"/>
			<xs:enumeration value="FlipX"/>
			<xs:enumeration value="FlipY"/>
			<xs:enumeration value="FlipXY"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Color Interpolation Mode enumeration -->
	<xs:simpleType name="ST_ColorInterpolationMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ScRgbLinearInterpolation"/>
			<xs:enumeration value="SRgbLinearInterpolation"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- SpreadMethod Mode enumeration -->
	<xs:simpleType name="ST_SpreadMethod">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Pad"/>
			<xs:enumeration value="Reflect"/>
			<xs:enumeration value="Repeat"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Combine Mode enumeration -->
	<xs:simpleType name="ST_CombineMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Xor"/>
			<xs:enumeration value="Union"/>
			<xs:enumeration value="Intersect"/>
			<xs:enumeration value="Exclude"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Combine Mode enumeration -->
	<xs:simpleType name="ST_FillRule">
		<xs:restriction base="xs:string">
			<xs:enumeration value="EvenOdd"/>
			<xs:enumeration value="NonZero"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Style Simulation Enumeration -->
	<xs:simpleType name="ST_StyleSimulations">
		<xs:restriction base="xs:string">
			<xs:enumeration value="None"/>
			<xs:enumeration value="ItalicSimulation"/>
			<xs:enumeration value="BoldSimulation"/>
			<xs:enumeration value="BoldItalicSimulation"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Stretch Enumeration -->
	<xs:simpleType name="ST_Stretch">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Fill"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- ViewUnits Enumeration -->
	<xs:simpleType name="ST_ViewUnits">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Absolute"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- MappingMode Enumeration -->
	<xs:simpleType name="ST_MappingMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Absolute"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

