Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/PLMXMLTranslator.xsl
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/PLMXMLTranslator.xsl	(revision 968)
+++ 	(revision )
@@ -1,326 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="2.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema"
-	xmlns:cim="http://www.coolemall.eu/DEBBComponent" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns:fun="http://whatever">
-
-	<!-- Importing xslt for translating debb components -->
-	<xsl:import href="DEBBComponentTranslator.xsl" />
-
-	<!-- Information for mapping of DEBB classes into DCWoRMS computingResource 
-		classes -->
-	<xsl:param name="computingResourceClasses" select="computingResourceClasses" />
-
-	<!-- Information for mapping of resource classes into DCWoRMS resourceUnits 
-		classes -->
-	<!-- (Needed to pass to DEBB Components xslt) -->
-	<xsl:param name="resourceUnitClasses" select="resourceUnitClasses" />
-
-	<!-- Information from which level the translator should start moving information to templates -->
-	<xsl:param name="templateStartLevel" select="templateStartLevel" />
-
-	<!-- Specification of the output document -->
-	<xsl:output method="xml" version="1.0" encoding="UTF-8"
-		indent="yes" />
-
-	<!-- Root of the PLM XML document -->
-	<xsl:variable name="rootDoc" select="/" />
-
-	<!-- Default DEBBComponents file name (used if it is not specified in PLM 
-		XML file) -->
-	<xsl:variable name="defaultDEBBComponentsFileName" select="'./example/DEBBComponents.xml'" />
-
-
-	<xsl:template match="/">
-		<xsl:element name="environment">
-			<xsl:attribute name="xsi:noNamespaceSchemaLocation">../DCWormsResSchema.xsd</xsl:attribute>
-			
-			<xsl:element name="resources">
-				<!-- Iterate the document, create hierarchy and "links" to templates -->
-				<xsl:apply-templates select="//plm:InstanceGraph" mode="createHierarchy"/>
-								
-				<!-- Create main scheduler -->
-				<xsl:element name="scheduler"></xsl:element>
-			</xsl:element>
-			
-			<!-- Create templates (if needed) -->
-			<xsl:if test="fun:containsTemplates() = true()">
-				<xsl:element name="templates">
-					<!-- Iterate the document and createTemplates -->
-					<xsl:apply-templates select="//plm:InstanceGraph" mode="createTemplates"/>
-				</xsl:element>			
-			</xsl:if>
-			
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="plm:InstanceGraph" mode="createHierarchy">
-		<!-- Finding root DEBB -->
-		<xsl:variable name="rootRef" select="@rootRefs" />
-		<xsl:apply-templates select="plm:ProductInstance[@id=$rootRef]" mode="createHierarchy"/>
-	</xsl:template>
-
-	<xsl:template match="plm:InstanceGraph" mode="createTemplates">
-		<xsl:apply-templates select="//plm:ProductRevisionView[plm:UserData/plm:UserValue/@title='DEBBLevel' and plm:UserData/plm:UserValue/@value=$templateStartLevel]" mode="createTemplates"/>
-	</xsl:template>
-
-	<xsl:template match="plm:ProductInstance" mode="createHierarchy">
-		<xsl:variable name="partRef" select="@partRef" />
-		<!-- Get rid of # at the beginning -->
-		<xsl:variable name="productInstanceId" select="translate($partRef, '#', '')" />
-
-		<xsl:if test="not (starts-with(@name, 'Sensor') or starts-with(@name, 'Heatsink') or starts-with(@name, 'Outlet'))">
-			<!-- We have to get rid of sensors, heatsinks, outlets, which make only problems here -->
-			<xsl:element name="computingResource">
-				<xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute>
-
-
-				<!-- Find corresponding ProductRevisionView and let it translate itself -->
-				<xsl:apply-templates select="//plm:ProductRevisionView[@id=$productInstanceId]" mode="createHierarchy"/>
-
-				<!-- Add hostnames, labels, locations, sequences, etc. -->
-				<xsl:variable name="debbHostname"
-					select="plm:UserData/plm:UserValue[@title='hostname']/@value" />
-				<xsl:if test="$debbHostname != ''">
-					<xsl:element name="parameter">
-						<xsl:attribute name="name">hostname</xsl:attribute>
-						<xsl:element name="value">
-							<xsl:value-of select="$debbHostname" />
-						</xsl:element>
-					</xsl:element>
-				</xsl:if>
-				<xsl:variable name="debbLabel"
-					select="plm:UserData/plm:UserValue[@title='label']/@value" />
-				<xsl:if test="$debbLabel != ''">
-					<xsl:element name="parameter">
-						<xsl:attribute name="name">label</xsl:attribute>
-						<xsl:element name="value">
-							<xsl:value-of select="$debbLabel" />
-						</xsl:element>
-					</xsl:element>
-				</xsl:if>
-				<xsl:variable name="debbLocation"
-					select="plm:UserData/plm:UserValue[@title='location']/@value" />
-				<xsl:if test="debbLocation != ''">
-					<xsl:element name="parameter">
-						<xsl:attribute name="name">location</xsl:attribute>
-						<xsl:element name="value">
-							<xsl:value-of select="$debbLocation" />
-						</xsl:element>
-					</xsl:element>
-				</xsl:if>
-				<xsl:variable name="debbSequence"
-					select="plm:UserData/plm:UserValue[@title='sequence']/@value" />
-				<xsl:if test="$debbSequence != ''">
-					<xsl:element name="parameter">
-						<xsl:attribute name="name">sequence</xsl:attribute>
-						<xsl:element name="value">
-							<xsl:value-of select="$debbSequence" />
-						</xsl:element>
-					</xsl:element>
-				</xsl:if>	
-				
-							
-			</xsl:element>
-		</xsl:if>
-	</xsl:template>
-	
-	
-	<xsl:template match="plm:ProductRevisionView" mode="createHierarchy">
-
-		<!-- instanceRefs contain space separated ids of nested DEBBs -->
-		<xsl:variable name="tokenizedText" select="tokenize(@instanceRefs, ' ')" />
-	
-		<!-- DEBBLevel -->
-		<xsl:variable name="debbLevel"
-			select="plm:UserData/plm:UserValue[@title='DEBBLevel']/@value" />
-		<!-- DEBBComponentId -->
-		<xsl:variable name="debbComponentId"
-			select="plm:UserData/plm:UserValue[@title='DEBBComponentId']/@value" />
-
-		<xsl:variable name="debbComponentFile"
-			select="plm:UserData/plm:UserValue[@title='DEBBComponentFile']/@value" />
-	
-		<xsl:attribute name="class">
-			<xsl:value-of select="$debbLevel"/>
-		</xsl:attribute>
-		
-		<xsl:choose>
-			<xsl:when test="$debbLevel = $templateStartLevel">
-				<!-- Change into template. The rest of the hierarchy will be in a corresponding template. -->
-				<xsl:element name="templateId">
-					<xsl:value-of select="$debbLevel"/>
-					<xsl:text>-</xsl:text>
-					<xsl:value-of select="$debbComponentId"/>
-				</xsl:element>		
-			</xsl:when>
-			<xsl:otherwise>
-			
-				<!-- Read information from DEBBComponent file -->	
-				<xsl:choose>
-					 <!-- DEBB Components file is defined  -->
-					<xsl:when test="$debbComponentFile != ''">
-						<xsl:comment>
-							DEBB Component file is <xsl:value-of select="$debbComponentFile" />
-						</xsl:comment>
-						<xsl:variable name="nestedDoc" select="document($debbComponentFile)" />
-					
-<!--						<xsl:value-of select="fun:translateDEBBComponent($nestedDoc, $debbComponentFile)"/>-->
-
-						<xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]">
-							<xsl:with-param name="computingResourceClasses">
-								<xsl:value-of select="$computingResourceClasses" />
-							</xsl:with-param>
-							<xsl:with-param name="resourceUnitClasses">
-								<xsl:value-of select="$resourceUnitClasses" />
-							</xsl:with-param>
-						</xsl:apply-templates>
-					
-					</xsl:when>
-					 <!-- DEBB Components file is not defined. Use default one.  -->
-					<xsl:otherwise>
-						<xsl:comment>
-							DEBB Component file is <xsl:value-of select="$defaultDEBBComponentsFileName" />
-						</xsl:comment>
-						<xsl:variable name="nestedDoc"
-							select="document($defaultDEBBComponentsFileName)" />
-		
-<!--							<xsl:value-of select="fun:translateDEBBComponent($nestedDoc, $debbComponentFile)"/>-->
-							
-						<xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]">
-							<xsl:with-param name="computingResourceClasses">
-								<xsl:value-of select="$computingResourceClasses" />
-							</xsl:with-param>
-							<xsl:with-param name="resourceUnitClasses">
-								<xsl:value-of select="$resourceUnitClasses" />
-							</xsl:with-param>
-						</xsl:apply-templates>
-		
-					</xsl:otherwise>
-				</xsl:choose>			
-			
-				<!-- Iterate children and ask them to translate themselves -->
-				<xsl:for-each select="1 to count($tokenizedText)">
-					<xsl:variable name="index" select="." />
-					<xsl:apply-templates
-						select="$rootDoc//plm:ProductInstance[@id=$tokenizedText[$index]]" mode="createHierarchy"/>
-				</xsl:for-each>			
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:template>
-	
-	<xsl:template match="plm:ProductRevisionView" mode="createTemplates">
-	
-		<!-- instanceRefs contain space separated ids of nested DEBBs -->
-		<xsl:variable name="tokenizedText" select="tokenize(@instanceRefs, ' ')" />
-	
-		<xsl:variable name="debbLevel"
-			select="plm:UserData/plm:UserValue[@title='DEBBLevel']/@value" />
-			
-		<xsl:variable name="debbComponentId"
-			select="plm:UserData/plm:UserValue[@title='DEBBComponentId']/@value" />
-
-		<xsl:variable name="debbComponentFile"
-			select="plm:UserData/plm:UserValue[@title='DEBBComponentFile']/@value" />
-	
-		<xsl:if test="$debbLevel">
-			<xsl:element name="computingResourceTemplate">
-				<xsl:attribute name="name">
-					<xsl:value-of select="$debbLevel"/>
-					<xsl:text>-</xsl:text>
-					<xsl:value-of select="$debbComponentId"/>
-				</xsl:attribute>
-				<xsl:attribute name="class">
-					<xsl:value-of select="$debbLevel"/>
-				</xsl:attribute>
-				
-				<!-- Read information from DEBBComponent file -->	
-				<xsl:choose>
-					 <!-- DEBB Components file is defined  -->
-					<xsl:when test="$debbComponentFile != ''">
-						<xsl:comment>
-							DEBB Component file is <xsl:value-of select="$debbComponentFile" />
-						</xsl:comment>
-						<xsl:variable name="nestedDoc" select="document($debbComponentFile)" />
-					
-<!--						<xsl:value-of select="fun:translateDEBBComponent($nestedDoc, $debbComponentFile)"/>-->
-
-						<xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]">
-							<xsl:with-param name="computingResourceClasses">
-								<xsl:value-of select="$computingResourceClasses" />
-							</xsl:with-param>
-							<xsl:with-param name="resourceUnitClasses">
-								<xsl:value-of select="$resourceUnitClasses" />
-							</xsl:with-param>
-						</xsl:apply-templates>
-					
-					</xsl:when>
-					 <!-- DEBB Components file is not defined. Use default one.  -->
-					<xsl:otherwise>
-						<xsl:comment>
-							DEBB Component file is <xsl:value-of select="$defaultDEBBComponentsFileName" />
-						</xsl:comment>
-						<xsl:variable name="nestedDoc"
-							select="document($defaultDEBBComponentsFileName)" />
-		
-<!--							<xsl:value-of select="fun:translateDEBBComponent($nestedDoc, $debbComponentFile)"/>-->
-							
-						<xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]">
-							<xsl:with-param name="computingResourceClasses">
-								<xsl:value-of select="$computingResourceClasses" />
-							</xsl:with-param>
-							<xsl:with-param name="resourceUnitClasses">
-								<xsl:value-of select="$resourceUnitClasses" />
-							</xsl:with-param>
-						</xsl:apply-templates>
-		
-					</xsl:otherwise>
-				</xsl:choose>
-				
-				<!-- Iterate children and ask them to translate themselves -->
-				<xsl:for-each select="1 to count($tokenizedText)">
-					<xsl:variable name="index" select="." />
-					<xsl:apply-templates
-						select="$rootDoc//plm:ProductInstance[@id=$tokenizedText[$index]]" mode="createHierarchy"/>
-				</xsl:for-each>			
-							
-			</xsl:element>
-		</xsl:if>
-	</xsl:template>
-	
-	<xsl:function name="fun:translateDEBBComponent">
-		<xsl:param name="nestedDoc"/>
-		<xsl:param name="debbComponentId"/>
-	
-		<xsl:text>BEGIN</xsl:text>
-		debbComponentId=<xsl:value-of select="$debbComponentId"/>
-		<xsl:comment>
-			<xsl:text>translateDEBBComponent(</xsl:text>
-			<xsl:value-of select="$nestedDoc/ComponentId"/>
-			<xsl:text>, </xsl:text>
-			<xsl:value-of select="$debbComponentId"/>
-			<xsl:text>)</xsl:text>
-		</xsl:comment>
-		
-		<!-- Does not work :((( -->
-		<xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]">
-			<xsl:with-param name="computingResourceClasses">
-				<xsl:value-of select="$computingResourceClasses" />
-			</xsl:with-param>
-			<xsl:with-param name="resourceUnitClasses">
-				<xsl:value-of select="$resourceUnitClasses" />
-			</xsl:with-param>
-		</xsl:apply-templates>
-
-		<xsl:text>END</xsl:text>	
-	</xsl:function>		
-	
-	<xsl:function name="fun:containsTemplates">
-		<xsl:variable name="productRevisionViews" select="$rootDoc//plm:ProductRevisionView[plm:UserData/plm:UserValue/@title='DEBBLevel' and plm:UserData/plm:UserValue/@value=$templateStartLevel]"/>
-		<xsl:variable name="numberOfTemplates" select="count($productRevisionViews)"/>
-
-		<xsl:value-of select="$numberOfTemplates &gt; 0"/>
-	</xsl:function>	
-	
-</xsl:stylesheet>
-
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DEBBComponentTranslator.xsl
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DEBBComponentTranslator.xsl	(revision 1136)
+++ 	(revision )
@@ -1,798 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema"
-	xmlns:cim="http://www.coolemall.eu/DEBBComponent" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-	<!-- Specification of the output document -->
-	<xsl:output method="xml" version="1.0" encoding="UTF-8"
-		indent="yes" />
-
-	<!-- Information for mapping of DEBB classes into DCWoRMS computingResource 
-		classes -->
-	<xsl:param name="computingResourceClasses" select="computingResourceClasses" />
-
-	<!-- Information for mapping of resource classes into DCWoRMS resourceUnits 
-		classes -->
-	<xsl:param name="resourceUnitClasses" select="resourceUnitClasses" />
-
-	<xsl:template match="/">
-		<xsl:element name="environment">
-			<xsl:attribute name="xsi:noNamespaceSchemaLocation">DCWormsResSchema.xsd</xsl:attribute>
-			<xsl:element name="resources">
-				<xsl:element name="scheduler"></xsl:element>
-				<xsl:apply-templates select="//*[ComponentId]"
-					mode="full" />
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="//*[ComponentId]" mode="full">
-		<xsl:element name="computingResource">
-			<xsl:attribute name="class"> 
-		 		<xsl:value-of select="name(.)" /> 
-		 	</xsl:attribute>
-			<xsl:attribute name="name">
-				<xsl:variable name="oldComponentId"><xsl:value-of select="ComponentId" /></xsl:variable>
-				<xsl:variable name="newComponentId">
-				<xsl:value-of select="translate($oldComponentId, '/', '_')" />
-				</xsl:variable>
-				<xsl:value-of select="$newComponentId" />
-			</xsl:attribute>
-			<xsl:call-template name="translateComputingElement" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="//*[ComponentId]">
-		<xsl:call-template name="translateComputingElement" />
-	</xsl:template>
-
-	<xsl:template name="translateComputingElement">
-		<xsl:if test="Memory">
-			<xsl:apply-templates select="Memory" />
-		</xsl:if>
-		
-		<xsl:if test="Storage">
-			<xsl:apply-templates select="Storage" />
-		</xsl:if>
-		
-		<xsl:call-template name="BasicDEBBPhysicalElementParameters" />
-		
-		<xsl:if test="Baseboard">
-			<xsl:apply-templates select="Baseboard" />
-		</xsl:if>
-		
-		<xsl:if test="Sensor">
-			<xsl:apply-templates select="Sensor" />
-		</xsl:if>
-		
-		<xsl:if test="PowerSupply">
-			<xsl:apply-templates select="PowerSupply" />
-		</xsl:if>
-		
-		<xsl:if test="Processor">
-			<xsl:apply-templates select="Processor" />
-		</xsl:if>
-		
-		<xsl:if test="CoolingDevice">
-			<!-- Base cooling device data -->
-			<xsl:apply-templates select="CoolingDevice" mode="basic" />
-			
-			<!-- Air throughput connected, advanced, technical data -->
-			<xsl:if test="CoolingDevice/AirThroughputProfile or CoolingDevice/WaterThroughputProfile">
-				<xsl:element name="profile">
-						<xsl:if test="CoolingDevice/AirThroughputProfile">
-							<xsl:element name="airThroughputProfile">
-								<xsl:element name="airThroughputStates">
-									<xsl:apply-templates select="CoolingDevice"
-										mode="air" />
-								</xsl:element>
-							</xsl:element>						
-						</xsl:if>
-						
-						<!-- TODO: DCWoRMS schema cannot handle water cooled devices. The code below should be enabled as soon it can.-->
-<!--						<xsl:if test="CoolingDevice/WaterThroughputProfile">-->
-<!--							<xsl:element name="waterThroughputProfile">-->
-<!--								<xsl:element name="waterThroughputStates">-->
-<!--									<xsl:apply-templates select="CoolingDevice"-->
-<!--										mode="water" />-->
-<!--								</xsl:element>-->
-<!--							</xsl:element>							-->
-<!--						</xsl:if>-->
-				</xsl:element>
-			</xsl:if>
-		</xsl:if>
-		
-		<xsl:if test="Heatsink">
-			<xsl:apply-templates select="Heatsink" />
-		</xsl:if>	
-		
-		<xsl:if test="Outlet">
-			<xsl:apply-templates select="Outlet" />
-		</xsl:if>	
-
-		<xsl:if test="Connector">
-			<xsl:apply-templates select="Connector" />
-		</xsl:if>	
-
-		<xsl:if test="Slot">
-			<xsl:apply-templates select="Slot" />
-		</xsl:if>	
-
-		<xsl:if test="Size">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">size</xsl:attribute>	
-					<xsl:element name="value">
-					<xsl:value-of select="Size" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>	
-
-	</xsl:template>
-
-	<xsl:template match="Baseboard">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">baseboard</xsl:attribute>
-			<!-- Don't call BasicDEBBPhysicalElementParameters, because parameter 
-				cannot contain parameters. Must be parameter containing properties. -->
-			<xsl:call-template name="BasicDEBBPhysicalElementProperties" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="Sensor">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">sensor</xsl:attribute>
-			<xsl:element name="property">
-				<xsl:attribute name="name">class</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Class" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:element name="property">
-				<xsl:attribute name="name">unit</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Unit" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:if test="MinValue">
-				<xsl:element name="property">
-					<xsl:attribute name="name">minValue</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="MinValue" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="MaxValue">
-				<xsl:element name="property">
-					<xsl:attribute name="name">maxValue</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="MaxValue" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="Factor">
-				<xsl:element name="property">
-					<xsl:attribute name="name">factor</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="Factor" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="Accuracy">
-				<xsl:element name="property">
-					<xsl:attribute name="name">accuracy</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="Accuracy" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-
-			<!-- Don't call BasicDEBBPhysicalElementParameters, because parameter 
-				cannot contain parameters. Must be parameter containing properties. -->
-			<xsl:call-template name="BasicDEBBSimpleTypeProperties" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="Processor">
-		<xsl:element name="computingResource">
-			<xsl:attribute name="class">Processor</xsl:attribute>
-			<xsl:call-template name="BasicDEBBPhysicalElementParameters" />
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">speed</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="MaxClockSpeed" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:if test="PState | CState">
-				<!-- If PState or CState elements present add powerProfile element -->
-				<xsl:element name="profile">
-					<xsl:element name="powerProfile">
-						<xsl:if test="PState/Transition">
-							<xsl:element name="powerStates">
-								<!-- <xsl:element name="powerState"> -->
-								<!-- TODO: What to take if from??? -->
-								<!-- <xsl:element name="name">DummyName</xsl:element> -->
-								<!-- <xsl:element name="powerUsage">0</xsl:element> -->
-								<xsl:apply-templates select="PState/Transition" />
-								<!-- </xsl:element> -->
-							</xsl:element>
-						</xsl:if>
-						
-						<xsl:if test="CState">
-							<!-- If any CState is present add powerStates element -->
-							<xsl:element name="powerStates">
-								<xsl:apply-templates select="CState" />
-							</xsl:element>
-						</xsl:if>
-						
-						<xsl:apply-templates select="PState" />
-												
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="PState">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">pState</xsl:attribute>
-			<xsl:element name="property">
-				<xsl:attribute name="name">name</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="State" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:element name="property">
-				<xsl:attribute name="name">frequency</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Frequency" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:element name="property">
-				<xsl:attribute name="name">voltage</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Voltage" />
-				</xsl:element>
-			</xsl:element>
-			<!-- <xsl:element name="property">
-				<xsl:attribute name="name">powerUsage</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="PowerUsage" />
-				</xsl:element>
-			</xsl:element>-->
-			<xsl:element name="property">
-				<xsl:attribute name="name">powerUsageMin</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="PowerUsageMin" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:element name="property">
-				<xsl:attribute name="name">powerUsageMax</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="PowerUsageMax" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="CState">
-<!--		<xsl:element name="parameter">-->
-<!--			<xsl:attribute name="name">cState</xsl:attribute>-->
-<!--			<xsl:element name="property">-->
-<!--				<xsl:attribute name="name">name</xsl:attribute>-->
-<!--				<xsl:element name="value">-->
-<!--					<xsl:value-of select="State" />-->
-<!--				</xsl:element>-->
-<!--			</xsl:element>-->
-<!--			<xsl:element name="property">-->
-<!--				<xsl:attribute name="name">powerUsage</xsl:attribute>-->
-<!--				<xsl:element name="value">-->
-<!--					<xsl:value-of select="PowerUsage" />-->
-<!--				</xsl:element>-->
-<!--			</xsl:element>-->
-<!--		</xsl:element>-->
-
-		<xsl:element name="powerState">
-			<xsl:element name="name">
-				<xsl:value-of select="State" />
-			</xsl:element>
-			<xsl:element name="powerUsage">
-				<xsl:value-of select="PowerUsage" />
-			</xsl:element>			
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="PState/Transition">
-		<xsl:element name="powerState">
-			<xsl:element name="name">
-				<xsl:value-of select="../State" />
-			</xsl:element>
-			<xsl:element name="transition">
-				<xsl:element name="to">
-					<xsl:value-of select="ToState" />
-				</xsl:element>
-				<xsl:element name="powerUsage">
-					<xsl:value-of select="PowerUsage" />
-				</xsl:element>
-				<xsl:element name="time">
-					<xsl:value-of select="Time" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template name="BasicStateParameters">
-		<xsl:element name="name">
-			<xsl:value-of select="State" />
-		</xsl:element>
-		<xsl:element name="powerUsage">
-			<xsl:value-of select="PowerUsage" />
-		</xsl:element>
-		<xsl:element name="transition">
-			<xsl:element name="to">
-				<xsl:value-of select="Transition/ToState" />
-			</xsl:element>
-			<xsl:element name="powerUsage">
-				<xsl:value-of select="Transition/PowerUsage" />
-			</xsl:element>
-			<xsl:element name="time">
-				<xsl:value-of select="Transition/Time" />
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="PowerSupply">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">powerSupply</xsl:attribute>
-			
-			<xsl:element name="property">
-				<xsl:attribute name="name">class</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Class" />
-				</xsl:element>
-			</xsl:element>
-
-			<xsl:element name="property">
-				<xsl:attribute name="name">totalOutputPower</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="TotalOutputPower" />
-				</xsl:element>
-			</xsl:element>
-		
-			<xsl:element name="property">
-				<xsl:attribute name="name">efficiency</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Efficiency" />
-				</xsl:element>
-			</xsl:element>
-			
-			<!-- TODO: PowerProfile -->
-			
-			<!-- Don't call BasicDEBBPhysicalElementParameters, because parameter 
-				cannot contain parameters. Must be parameter containing properties. -->
-			<xsl:call-template name="BasicDEBBComplexTypeProperties" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="Memory">
-		<xsl:element name="resourceUnit">
-			<xsl:attribute name="class">Memory</xsl:attribute>
-			<xsl:element name="amount">
-				<xsl:value-of select="Capacity" />
-			</xsl:element>
-			<xsl:call-template name="BasicDEBBPhysicalElementParameters" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="Storage">
-		<xsl:element name="resourceUnit">
-			<xsl:attribute name="class">Storage</xsl:attribute>
-			<xsl:attribute name="type"><xsl:value-of select="Class" /></xsl:attribute>
-			<xsl:element name="amount">
-				<xsl:attribute name="unit">MB</xsl:attribute>
-				<xsl:value-of select="Capacity" />
-			</xsl:element>
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">interface</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Interface" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:call-template name="BasicDEBBPhysicalElementParameters" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="CoolingDevice" mode="basic">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">CoolingDevice</xsl:attribute>
-			<!-- Don't call BasicDEBBPhysicalElementParameters, because parameter 
-				cannot contain parameters. Must be parameter containing properties. -->
-
-			<!-- Obligatory attribute -->
-			<xsl:element name="property">
-				<xsl:attribute name="name">class</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Class" />
-				</xsl:element>
-			</xsl:element>
-			<xsl:if test="MaxCoolingCapacity">
-				<xsl:element name="property">
-					<xsl:attribute name="name">maxCoolingCapacity</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="MaxCoolingCapacity" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="MaxAirThroughput">
-				<xsl:element name="property">
-					<xsl:attribute name="name">maxAirThroughput</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="MaxAirThroughput" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="MaxWaterThroughput">
-				<xsl:element name="property">
-					<xsl:attribute name="name">maxWaterThroughput</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="MaxWaterThroughput" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			
-			<!-- TODO: AirThroughputProfile -->
-			
-			<!-- TODO: WaterThroughputProfile -->
-			
-			<xsl:call-template name="BasicDEBBComplexTypeProperties" />
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="CoolingDevice" mode="air">	
-		<xsl:if test="AirThroughputProfile">
-			<xsl:attribute name="name"><xsl:value-of select="AirThroughputProfile/Name" /></xsl:attribute>
-			<xsl:apply-templates select="AirThroughputProfile" />	
-		</xsl:if>		
-	</xsl:template>
-
-	<xsl:template match="CoolingDevice" mode="water">	
-		<xsl:if test="WaterThroughputProfile">
-			<xsl:attribute name="name"><xsl:value-of select="WaterThroughputProfile/Name" /></xsl:attribute>
-			<xsl:apply-templates select="WaterThroughputProfile" />										
-		</xsl:if>
-	</xsl:template>
-
-
-	<xsl:template match="AirThroughputProfile">
-		<xsl:apply-templates select="FlowState" mode="air"/>
-	</xsl:template>
-
-	<xsl:template match="WaterThroughputProfile">
-		<xsl:apply-templates select="FlowState" mode="water"/>
-	</xsl:template>
-
-	<xsl:template match="FlowState" mode="air">
-		<xsl:element name="airThroughputState">
-			<xsl:element name="name">
-				<xsl:value-of select="State" />
-			</xsl:element>
-			<xsl:if test="Flow">
-				<xsl:element name="value">
-					<xsl:value-of select="Flow" />
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="PowerUsage">
-				<xsl:element name="powerUsage">
-					<xsl:value-of select="PowerUsage" />
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="Transition">
-				<xsl:apply-templates select="Transition" />
-			</xsl:if>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="FlowState" mode="water">
-		<xsl:element name="waterThroughputState">
-			<xsl:element name="name">
-				<xsl:value-of select="State" />
-			</xsl:element>
-			<xsl:if test="Flow">
-				<xsl:element name="value">
-					<xsl:value-of select="Flow" />
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="PowerUsage">
-				<xsl:element name="powerUsage">
-					<xsl:value-of select="PowerUsage" />
-				</xsl:element>
-			</xsl:if>
-			<xsl:if test="Transition">
-				<xsl:apply-templates select="Transition" />
-			</xsl:if>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="Transition">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">toState</xsl:attribute>
-			<xsl:element name="value">
-				<xsl:value-of select="ToState" />
-			</xsl:element>
-		</xsl:element>
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">powerUsage</xsl:attribute>
-			<xsl:element name="value">
-				<xsl:value-of select="PowerUsage" />
-			</xsl:element>
-		</xsl:element>
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">time</xsl:attribute>
-			<xsl:element name="value">
-				<xsl:value-of select="Time" />
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-	<!-- Template for transforming basic parameters of all devices of any type -->
-	<xsl:template name="BasicDEBBPhysicalElementParameters">
-		<xsl:if test="Label">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">label</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Label" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-	
-		<xsl:if test="Manufacturer">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">manufacturer</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Manufacturer" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		<xsl:if test="Product">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">product</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Product" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		<xsl:if test="MaxPower">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">maxPower</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="MaxPower" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		
-		<xsl:if test="PowerUsage">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">powerUsage</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="PowerUsage" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-
-		<!-- TODO: PowerUsageProfile -->
-
-		<xsl:if test="Type">
-			<xsl:element name="parameter">
-				<xsl:attribute name="name">type</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Type" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>	
-		
-		<xsl:if test="Cores">
-			<xsl:element name="computingResource">
-				<xsl:attribute name="class">Core</xsl:attribute>
-				<xsl:attribute name="count">
-					<xsl:value-of select="Cores" />
-				</xsl:attribute>
-			</xsl:element>
-		</xsl:if>
-	</xsl:template>
-
-	<xsl:template name="BasicDEBBSimpleTypeProperties">
-		<xsl:comment>BasicDEBBSimpleTypeProperties</xsl:comment>
-		
-		<xsl:call-template name="BasicDEBBPhysicalElementProperties"/>
-		<!-- Transform (not needed in DCWoRMS) -->
-<!--		<xsl:if test="Transform">-->
-<!--			<xsl:element name="property">-->
-<!--				<xsl:attribute name="name">transform</xsl:attribute>-->
-<!--				<xsl:element name="value">-->
-<!--					<xsl:value-of select="Transform" />-->
-<!--				</xsl:element>-->
-<!--			</xsl:element>		-->
-<!--		</xsl:if>-->
-		
-		<!-- Reference (not needed in DCWoRMS) -->
-<!--		<xsl:if test="Reference">-->
-<!--			<xsl:element name="property">-->
-<!--				<xsl:attribute name="name">reference</xsl:attribute>-->
-<!--				<xsl:element name="value">-->
-<!--					<xsl:value-of select="Reference" />-->
-<!--				</xsl:element>-->
-<!--			</xsl:element>		-->
-<!--		</xsl:if>			-->
-	</xsl:template>
-	
-	
-	<xsl:template name="BasicDEBBComplexTypeProperties">
-		<xsl:apply-templates select="Outlet"/>
-		<xsl:apply-templates select="Heatsink"/>
-		<xsl:apply-templates select="Sensor"/>
-		
-		<xsl:call-template name="BasicDEBBSimpleTypeProperties"></xsl:call-template>
-	</xsl:template>
-	
-	<xsl:template name="BasicDEBBPhysicalElementProperties">
-		<xsl:comment>BasicDEBBPhysicalElementProperties</xsl:comment>
-		
-		<xsl:if test="Label">
-			<xsl:element name="property">
-				<xsl:attribute name="name">label</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Label" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		
-		<xsl:if test="Manufacturer">
-			<xsl:element name="property">
-				<xsl:attribute name="name">manufacturer</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Manufacturer" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		
-		<xsl:if test="Product">
-			<xsl:element name="property">
-				<xsl:attribute name="name">product</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Product" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		
-		<xsl:if test="MaxPower">
-			<xsl:element name="property">
-				<xsl:attribute name="name">maxPower</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="MaxPower" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		
-		<xsl:if test="PowerUsage">
-			<xsl:element name="property">
-				<xsl:attribute name="name">powerUsage</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="PowerUsage" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-
-		<!-- PowerUsageProfile -->
-		<!-- TODO: It should be translated, but it is not clear how. Impossible
-		 to map hierarchy in parameters and their properties, which is necessary here. -->
-<!--		<xsl:if test="PowerUsageProfile">-->
-<!--			<xsl:element name="property">-->
-<!--				<xsl:attribute name="name">powerUsageProfile</xsl:attribute>-->
-<!--				<xsl:element name="value">-->
-<!--					<xsl:value-of select="PowerUsageProfile" />-->
-<!--				</xsl:element>-->
-<!--			</xsl:element>-->
-<!--		</xsl:if>-->
-
-		
-		<xsl:if test="Type">
-			<xsl:element name="property">
-				<xsl:attribute name="name">type</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Type" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-		
-	</xsl:template>
-	
-	<xsl:template match="Heatsink">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">heatsink</xsl:attribute>
-			
-			<xsl:if test="TransferRate">
-				<xsl:element name="property">
-					<xsl:attribute name="name">transferRate</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="TransferRate" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			
-			<!-- Don't call BasicDEBBPhysicalElementParameters, because parameter 
-				cannot contain parameters. Must be parameter containing properties. -->
-			<xsl:call-template name="BasicDEBBSimpleTypeProperties" />
-		</xsl:element>	
-	</xsl:template>	
-	
-	<xsl:template match="Outlet">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">outlet</xsl:attribute>
-			
-			<xsl:if test="MaxRPM">
-				<xsl:element name="property">
-					<xsl:attribute name="name">maxRPM</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="MaxRPM" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>
-			
-			<!-- Don't call BasicDEBBPhysicalElementParameters, because parameter 
-				cannot contain parameters. Must be parameter containing properties. -->
-			<xsl:call-template name="BasicDEBBSimpleTypeProperties" />
-		</xsl:element>
-	
-	</xsl:template>	
-
-	<xsl:template match="Connector">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">connector</xsl:attribute>	
-			
-			<xsl:call-template name="BasicDEBBConnectorTypeProperties"/>
-		</xsl:element>	
-	</xsl:template>
-	
-	<xsl:template match="Slot">
-		<xsl:element name="parameter">
-			<xsl:attribute name="name">slot</xsl:attribute>	
-			
-			<xsl:call-template name="BasicDEBBConnectorTypeProperties"/>
-		</xsl:element>	
-	</xsl:template>
-	
-	<xsl:template name="BasicDEBBConnectorTypeProperties">
-		<xsl:if test="Number">
-			<xsl:element name="property">
-				<xsl:attribute name="name">number</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="Number" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>
-
-		<xsl:element name="property">
-			<xsl:attribute name="name">connectorType</xsl:attribute>
-			<xsl:element name="value">
-				<xsl:value-of select="ConnectorType" />
-			</xsl:element>
-		</xsl:element>
-
-		<xsl:element name="property">
-			<xsl:attribute name="name">label</xsl:attribute>
-			<xsl:element name="value">
-				<xsl:value-of select="Label" />
-			</xsl:element>
-		</xsl:element>
-		
-		<!-- TODO -->
-		<!-- Transform ignored -->
-		
-		<xsl:if test="AvailSpace">
-			<xsl:element name="property">
-				<xsl:attribute name="name">availSpace</xsl:attribute>
-				<xsl:element name="value">
-					<xsl:value-of select="AvailSpace" />
-				</xsl:element>
-			</xsl:element>
-		</xsl:if>	
-	</xsl:template>
-</xsl:stylesheet>
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DEBBComponentsSplitter.xsl
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DEBBComponentsSplitter.xsl	(revision 641)
+++ 	(revision )
@@ -1,23 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="2.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-	<xsl:template match="/">
-		<!-- Copy everything about each DEBB into a separate file -->
-		<xsl:for-each select="//*[ComponentId]">
-
-			<xsl:variable name="oldComponentId">
-				<xsl:value-of select="ComponentId" />
-			</xsl:variable>
-			<!-- Remove slash from debb component id, as it causes problems -->
-			<xsl:variable name="newComponentId">
-				<xsl:value-of select="translate($oldComponentId, '/', '_')" />
-			</xsl:variable>
-			<xsl:value-of select="$newComponentId" />
-			
-			<xsl:result-document method="xml"
-				href="xml/debb_component_{$newComponentId}.xml" >
-				<xsl:copy-of select="." />
-			</xsl:result-document>
-		</xsl:for-each>
-	</xsl:template>
-</xsl:stylesheet>
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DCWoRMSELementsSorter.xsl
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DCWoRMSELementsSorter.xsl	(revision 692)
+++ 	(revision )
@@ -1,57 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="2.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-	<!-- Specification of the output document -->
-	<xsl:output method="xml" version="1.0" encoding="UTF-8"
-		indent="yes" />
-
-	<xsl:template match="/">
-		<xsl:apply-templates select="environment"/>
-	</xsl:template>
-
-	<xsl:template match="environment">
-		<xsl:copy >
-			<xsl:copy-of select="@*" />
-			<xsl:apply-templates select="resources"/>	
-		</xsl:copy>
-	</xsl:template>
-	
-	<xsl:template match="resources">
-		<xsl:copy copy-namespaces="no">
-			<xsl:apply-templates select="//resources/computingResource" />
-			<xsl:copy-of select="scheduler"/>
-		</xsl:copy>
-	</xsl:template>
-	
-	<xsl:template match="computingResource">
-		<xsl:copy copy-namespaces="no">
-			<xsl:copy-of select="@*" />
-			<!-- Find nested elements in appropriate order and copy them -->
-			<!-- resourceUnit -->
-			<xsl:apply-templates select="resourceUnit" />
-			<!-- parameter -->
-			<xsl:apply-templates select="parameter" />
-			<!-- profile -->
-			<xsl:apply-templates select="profile" />
-			<!-- location -->
-			<xsl:apply-templates select="location" />
-			<!-- computingResource -->
-			<xsl:apply-templates select="computingResource" />
-		</xsl:copy>
-	</xsl:template>
-
-	<xsl:template match="resourceUnit | parameter | profile | location">
-		<xsl:copy-of select="." copy-namespaces="no" />
-	</xsl:template>
-<!--	<xsl:template match="parameter">-->
-<!--		<xsl:copy-of select="." copy-namespaces="no" />-->
-<!--	</xsl:template>-->
-<!--	<xsl:template match="profile">-->
-<!--		<xsl:copy-of select="." copy-namespaces="no" />-->
-<!--	</xsl:template>-->
-<!--	<xsl:template match="location">-->
-<!--		<xsl:copy-of select="." copy-namespaces="no" />-->
-<!--	</xsl:template>-->
-
-</xsl:stylesheet>
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DEBBComponents.xsd
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DEBBComponents.xsd	(revision 1086)
+++ 	(revision )
@@ -1,499 +1,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-	xmlns:xsd_1="http://www.coolemall.eu/DEBBComponent" targetNamespace="http://www.coolemall.eu/DEBBComponent">
-
-	<xsd:complexType name="ConnectorType">
-		<xsd:sequence>
-			<xsd:element name="Number" type="xsd:int" minOccurs="0"
-				maxOccurs="1">
-				<xsd:annotation>
-					<xsd:documentation>
-						The number is only necessary for describing
-						slots but not the "Uplink" connector
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="ConnectorType" type="xsd:string"
-				minOccurs="1" maxOccurs="1">
-			</xsd:element>
-			<xsd:element name="Label" type="xsd:string" minOccurs="1"
-				maxOccurs="1">
-			</xsd:element>
-			<xsd:element name="Transform" type="xsd:string"
-				minOccurs="0" maxOccurs="1">
-				<xsd:annotation>
-					<xsd:documentation>The transform element contains relative position
-						and rotations. It might be the same transform syntax than in
-						PLMXML but depend on our needs.</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:element name="AvailSpace" type="xsd:string"
-				minOccurs="0" maxOccurs="1">
-				<xsd:annotation>
-					<xsd:documentation>
-						Size as space separated string with max XYZ	sizes
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="CoolingDeviceType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBComplexType">
-				<xsd:sequence>
-					<xsd:element name="Class">
-						<xsd:simpleType>
-							<xsd:restriction base="xsd:string">
-								<xsd:enumeration value="Fan"></xsd:enumeration>
-								<xsd:enumeration value="Refrigeration">
-								</xsd:enumeration>
-								<xsd:enumeration value="Heatpipe"></xsd:enumeration>
-								<xsd:enumeration value="ILC"></xsd:enumeration>
-								<xsd:enumeration value="LCU"></xsd:enumeration>
-								<xsd:enumeration value="CRAH"></xsd:enumeration>
-								<xsd:enumeration value="HVAC"></xsd:enumeration>
-							</xsd:restriction>
-						</xsd:simpleType>
-					</xsd:element>
-					<xsd:element minOccurs="0" name="MaxCoolingCapacity"
-						type="xsd:decimal" />
-					<xsd:element minOccurs="0" name="MaxAirThroughput"
-						type="xsd:decimal" />
-					<xsd:element minOccurs="0" name="MaxWaterThroughput"
-						type="xsd:decimal" />
-					<xsd:element name="AirThroughputProfile" type="xsd_1:FlowProfileType"
-						maxOccurs="1" minOccurs="0"></xsd:element>
-					<xsd:element name="WaterThroughputProfile" type="xsd_1:FlowProfileType"
-						maxOccurs="1" minOccurs="0"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="CStateType">
-		<xsd:sequence>
-			<xsd:element name="State" type="xsd:int" />
-			<xsd:element name="PowerUsage" type="xsd:double" />
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="DEBBComplexType">
-		<xsd:annotation>
-			<xsd:documentation>DEBBComplexType described the more complex parts
-				in comparison to DEBBPhysicalElementsType like power supplies,
-				cooling devices, etc</xsd:documentation>
-		</xsd:annotation>
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBSimpleType">
-				<xsd:sequence>
-					<xsd:element name="Outlet" type="xsd_1:OutletType"
-						maxOccurs="unbounded" minOccurs="0">
-					</xsd:element>
-					<xsd:element name="Heatsink" type="xsd_1:HeatsinkType"
-						maxOccurs="unbounded" minOccurs="0">
-					</xsd:element>
-					<xsd:element name="Sensor" type="xsd_1:SensorType"
-						maxOccurs="unbounded" minOccurs="0">
-					</xsd:element>
-					<xsd:element name="Network" type="xsd_1:NetworkType"
-						minOccurs="0" maxOccurs="unbounded"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-
-	<xsd:complexType name="DEBBComponentType">
-		<xsd:annotation>
-			<xsd:documentation>
-				DEBBComponent is used to represent exactly one DEBB
-				Component as it is used in the project and references by
-				its own ComponentID. In opposite to DEBBPhysicalElement
-				but is not referenced at all since this would lead to a
-				much more complex simulation. Examples for
-				DEBBComponents: Any model of
-				Node/NodeGroup/Rack/ServerRoom/PowerSupply/CoolingDevice/Fan/Sensor/...
-			</xsd:documentation>
-		</xsd:annotation>
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBComplexType">
-				<xsd:sequence>
-					<xsd:element name="Connector" type="xsd_1:ConnectorType"
-						minOccurs="0" maxOccurs="1">
-					</xsd:element>
-					<xsd:element name="Slot" type="xsd_1:ConnectorType"
-						minOccurs="0" maxOccurs="unbounded">
-					</xsd:element>
-					<xsd:element name="Size" type="xsd:string" minOccurs="0"
-						maxOccurs="1">
-						<xsd:annotation>
-							<xsd:documentation>
-								Size as space separated string with XYZ sizes
-							</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="DEBBPhysicalElementType">
-		<xsd:annotation>
-			<xsd:documentation>DEBBPhysicalElementType is the basic type for all
-				physical existing parts.
-				Examples for DEBBPhysical ElementTypes but not DEBBComplexTypes (memory
-				module, shelves, ...) which might also have a power consumption
-				(normally static)
-				These modules are directly derived from DEBBPhysicalElementType since no
-				additional definition is needed.
-			</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="ComponentId" type="xsd:string"
-				maxOccurs="1" minOccurs="0">
-			</xsd:element>
-			<xsd:element name="Label" type="xsd:string" minOccurs="0"
-				maxOccurs="1">
-			</xsd:element>
-			<xsd:element name="Manufacturer" type="xsd:string"
-				maxOccurs="1" minOccurs="0" />
-			<xsd:element name="Product" type="xsd:string" maxOccurs="1"
-				minOccurs="0" />
-			<xsd:element name="MaxPower" type="xsd:float" maxOccurs="1"
-				minOccurs="0">
-				<xsd:annotation>
-					<xsd:documentation>
-						MaxPowerUsage is the theoretical limit of power
-						consumption and may used for designing
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-			<xsd:choice>
-				<xsd:element name="PowerUsage" type="xsd:double" minOccurs="0" maxOccurs="1"></xsd:element>
-				<xsd:element name="PowerUsageState"
-					type="xsd_1:FlowStateType" minOccurs="0" maxOccurs="1">
-				</xsd:element>
-				<xsd:element name="PowerUsageProfile"
-					type="xsd_1:FlowProfileType" minOccurs="0" maxOccurs="1">
-				</xsd:element>
-			</xsd:choice>
-			<xsd:element name="Type" type="xsd:string" minOccurs="0"
-				maxOccurs="1">
-				<xsd:annotation>
-					<xsd:documentation>
-						The type element might be used to specify a type
-						for the module, i.e. for memory DDR/DDR2, for
-						CPU architecture name etc. It has only
-						informational character.
-					</xsd:documentation>
-				</xsd:annotation>
-			</xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="DEBBSimpleType">
-		<xsd:annotation>
-			<xsd:documentation>
-				SimpleType describes all distinct devices for CAD, so
-				where Transform and id/name are necessary. On the other
-				side the memory or CPU are nor relevant for that.
-			</xsd:documentation>
-		</xsd:annotation>
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBPhysicalElementType">
-				<xsd:sequence>
-					<xsd:element name="Transform" type="xsd:string"
-						minOccurs="0" maxOccurs="1">
-						<xsd:annotation>
-							<xsd:documentation>The Transform tag is necessary for all part
-								which are located within a Component i.e. fans within a RECS or
-								sensors or. For The "root object of a DEBB it is not used.
-								For all parts at a fixed position within the DEBB (fans, sensors,
-								etc.) this is the transform matrix relative to the DEBB origin.
-								For DEBBComponents this is the relative position of the
-								connector to the DEBB's origin. By "adding" the relative
-								transforms the resulting transform can be directly used for
-								PLMXML.
-							</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-					<xsd:element name="Reference" type="xsd_1:ReferenceType"
-						minOccurs="0" maxOccurs="unbounded"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="FlowProfileType">
-		<xsd:annotation>
-			<xsd:documentation>FlowProfile describes any sort of flow (air,
-				liquid, energy, ...) including different discrete states and
-				possible transitions since they all have the same characteristic
-				attributes. If there are now significant transition times/energy
-				consumptions they are simple omitted</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="Name" type="xsd:string" minOccurs="0"
-				maxOccurs="1"></xsd:element>
-			<xsd:element name="FlowState" type="xsd_1:FlowStateType"
-				minOccurs="1" maxOccurs="unbounded" />
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="FlowStateType">
-		<xsd:annotation>
-			<xsd:documentation>FlowStateType describes any kind of flow (air,
-				liquid, power, ...) and assumes that for maintaining the flow a
-				certain power usage is necessary.
-				For power supply units only the power which is used for
-				creating/transforming the power flow is counted as PowerUsage, but
-				not the power provided. So adding all PowerUsages will show the
-				overall consumption
-			</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="State" type="xsd:string"></xsd:element>
-			<xsd:element name="Flow" type="xsd:double" maxOccurs="1"
-				minOccurs="0">
-			</xsd:element>
-			<xsd:element name="PowerUsage" type="xsd:double"
-				maxOccurs="1" minOccurs="0">
-			</xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="HeatsinkType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBSimpleType">
-				<xsd:sequence>
-					<xsd:element name="TransferRate" type="xsd:float"
-						minOccurs="0" maxOccurs="1"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="MemoryType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBPhysicalElementType">
-				<xsd:sequence>
-					<!-- Size of Capacity in MB -->
-					<xsd:element name="Capacity" type="xsd:unsignedInt" />
-					<xsd:element name="Interface" type="xsd:string"
-						minOccurs="0" maxOccurs="1"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="NetworkType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBPhysicalElementType">
-				<xsd:sequence>
-					<xsd:element name="Interface" type="xsd:string"
-						minOccurs="0" maxOccurs="1">
-						<xsd:annotation>
-							<xsd:documentation>Physical Interface description like fibre,
-								twisted pair, etc.</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-					<xsd:element name="Technology" type="xsd:string"
-						minOccurs="0" maxOccurs="1">
-						<xsd:annotation>
-							<xsd:documentation>10GE, IB QDR etc.</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-					<xsd:element name="MaxBandwidth" type="xsd:int"
-						minOccurs="0" maxOccurs="1">
-						<xsd:annotation>
-							<xsd:documentation>Bandwidth as number in bit/s
-							</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="NodeType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBComponentType">
-				<xsd:sequence>
-					<xsd:element name="Baseboard" type="xsd_1:DEBBPhysicalElementType" />
-					<xsd:element name="Processor" maxOccurs="unbounded"
-						type="xsd_1:ProcessorType" />
-					<xsd:element name="Memory" maxOccurs="unbounded" type="xsd_1:MemoryType" />
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="OutletType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBSimpleType">
-				<xsd:sequence>
-					<xsd:element name="MaxRPM" type="xsd:int" minOccurs="0"
-						maxOccurs="1"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="PowerSupplyType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBComplexType">
-				<xsd:sequence>
-					<xsd:element name="Class">
-						<xsd:simpleType>
-							<xsd:restriction base="xsd:string">
-								<xsd:enumeration value="PSU"></xsd:enumeration>
-								<xsd:enumeration value="UPS"></xsd:enumeration>
-								<xsd:enumeration value="PDU"></xsd:enumeration>
-								<xsd:enumeration value="MVLVTransformer"></xsd:enumeration>
-							</xsd:restriction>
-						</xsd:simpleType>
-					</xsd:element>
-					<!-- maximum output power of the PowerSupply metered in miliWatt -->
-					<xsd:element name="TotalOutputPower" type="xsd:decimal" />
-					<xsd:element name="Efficiency" type="xsd:int"></xsd:element>
-					<xsd:element name="PowerProfile" type="xsd_1:FlowProfileType"
-						maxOccurs="1" minOccurs="0"></xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="ProcessorType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBPhysicalElementType">
-				<xsd:sequence>
-					<!-- Maximum Clockfrequency of CPU in MHz</xsd:documentation></xsd:annotation -->
-					<xsd:element name="MaxClockSpeed" type="xsd:unsignedInt" />
-					<xsd:element name="Cores" type="xsd:int" maxOccurs="1"
-						minOccurs="0"></xsd:element>
-					<xsd:element name="PState" type="xsd_1:PStateType"
-						minOccurs="0" maxOccurs="unbounded">
-					</xsd:element>
-					<xsd:element name="CState" type="xsd_1:CStateType"
-						minOccurs="0" maxOccurs="unbounded">
-					</xsd:element>
-					<xsd:element name="TDP" type="xsd:float" minOccurs="0"
-						maxOccurs="1">
-					</xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="PStateType">
-		<xsd:sequence>
-			<xsd:element name="State" type="xsd:int" />
-			<xsd:element name="Frequency" type="xsd:double" />
-			<xsd:element name="Voltage" type="xsd:double" />
-			<xsd:element name="PowerUsageMin" type="xsd:double" />
-			<xsd:element name="PowerUsageMax" type="xsd:double" />
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="ReferenceType">
-		<xsd:annotation>
-			<xsd:documentation>
-				ReferenceType describes references to external files
-				like STL, VRML, etc. and consists of a type and path.
-			</xsd:documentation>
-		</xsd:annotation>
-		<xsd:sequence>
-			<xsd:element name="Type" type="xsd:string" minOccurs="1"
-				maxOccurs="1">
-			</xsd:element>
-			<xsd:element name="Location" type="xsd:string" minOccurs="1"
-				maxOccurs="1"></xsd:element>
-		</xsd:sequence>
-	</xsd:complexType>
-
-	<xsd:complexType name="SensorType">
-		<xsd:complexContent>
-			<xsd:extension base="xsd_1:DEBBSimpleType">
-				<xsd:sequence>
-					<xsd:element name="Class">
-						<xsd:simpleType>
-							<xsd:restriction base="xsd:string">
-								<xsd:enumeration value="Temperature"></xsd:enumeration>
-								<xsd:enumeration value="Voltage"></xsd:enumeration>
-								<xsd:enumeration value="Power"></xsd:enumeration>
-								<xsd:enumeration value="Humidity"></xsd:enumeration>
-								<xsd:enumeration value="Throughput"></xsd:enumeration>
-								<xsd:enumeration value="Velocity"></xsd:enumeration>
-							</xsd:restriction>
-						</xsd:simpleType>
-					</xsd:element>
-					<xsd:element name="Unit">
-						<xsd:annotation>
-							<xsd:documentation>Only basic units should be used. For later
-								development other units can be used then the Factor should be
-								added.</xsd:documentation>
-						</xsd:annotation>
-						<xsd:simpleType>
-							<xsd:restriction base="xsd:string">
-								<xsd:enumeration value="Â°C"></xsd:enumeration>
-								<xsd:enumeration value="V"></xsd:enumeration>
-								<xsd:enumeration value="mV"></xsd:enumeration>
-								<xsd:enumeration value="kV"></xsd:enumeration>
-								<xsd:enumeration value="W"></xsd:enumeration>
-								<xsd:enumeration value="mW"></xsd:enumeration>
-								<xsd:enumeration value="kW"></xsd:enumeration>
-								<xsd:enumeration value="MW"></xsd:enumeration>
-								<xsd:enumeration value="%"></xsd:enumeration>
-								<xsd:enumeration value="l/sec"></xsd:enumeration>
-								<xsd:enumeration value="l/min"></xsd:enumeration>
-								<xsd:enumeration value="l/h"></xsd:enumeration>
-								<xsd:enumeration value="m3/min"></xsd:enumeration>
-								<xsd:enumeration value="m3/h"></xsd:enumeration>
-								<xsd:enumeration value="m/s"></xsd:enumeration>
-								<xsd:enumeration value="km/h"></xsd:enumeration>
-							</xsd:restriction>
-						</xsd:simpleType>
-					</xsd:element>
-					<xsd:element name="MinValue" type="xsd:float"
-						maxOccurs="1" minOccurs="0">
-					</xsd:element>
-					<xsd:element name="MaxValue" type="xsd:float"
-						maxOccurs="1" minOccurs="0">
-					</xsd:element>
-					<xsd:element name="Factor" type="xsd:float" maxOccurs="1"
-						minOccurs="0">
-						<xsd:annotation>
-							<xsd:documentation>Factor is just the multiplier between the
-								currently used unit and the basic unit (i.e. litre to cubic
-								meter)</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-					<xsd:element name="Accuracy" type="xsd:float"
-						maxOccurs="1" minOccurs="0">
-					</xsd:element>
-					<xsd:element name="Input" type="xsd:boolean">
-						<xsd:annotation>
-							<xsd:documentation>Input is a flag describing that a sensors is a
-								input value for the simulation or not. for example heat sources
-								can be seen an sources without any output afterwards. Other
-								sensors migth be added for extracting results at the end of the
-								simulation.</xsd:documentation>
-						</xsd:annotation>
-					</xsd:element>
-				</xsd:sequence>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:element name="Node" type="xsd_1:NodeType"></xsd:element>
-	<xsd:element name="NodeGroup" type="xsd_1:DEBBComponentType"></xsd:element>
-	<xsd:element name="ComputeBox1" type="xsd_1:DEBBComponentType"></xsd:element>
-	<xsd:element name="ComputeBox2" type="xsd_1:DEBBComponentType"></xsd:element>
-	<xsd:element name="PowerSupply" type="xsd_1:PowerSupplyType"></xsd:element>
-	<xsd:element name="CoolingDevice" type="xsd_1:CoolingDeviceType"></xsd:element>
-	<xsd:element name="Outlet" type="xsd_1:OutletType"></xsd:element>
-	<xsd:element name="Heatsink" type="xsd_1:HeatsinkType"></xsd:element>
-	<xsd:element name="Sensor" type="xsd_1:SensorType"></xsd:element>
-
-</xsd:schema>
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DCWoRMSDEBBUpdater.xsl
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DCWoRMSDEBBUpdater.xsl	(revision 1033)
+++ 	(revision )
@@ -1,339 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="2.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dcworms="DCWormsResSchema.xsd"
-	xmlns:debb2dcworms="../../debb2dcworms.xsd"
-	xmlns:fun="http://whatever">
-
-	<!-- Specification of the output document -->
-	<xsl:output method="xml" version="1.0" encoding="UTF-8"
-		indent="yes" />
-
-	<!-- Root of the DCWoRMS XML document -->
-	<xsl:variable name="rootDoc" select="/" />
-
-	<!-- Information about schedulers and estimators -->
-	<xsl:param name="additionalInformationFileName" select="additionalInformationFileName" />
-
-
-	<xsl:variable name="nestedDoc"
-		select="document($additionalInformationFileName)" />
-
-	<xsl:template match="/">
-		<xsl:comment>
-			This is DEBB information (taken from PLM XML and DEBBComponent
-			files), updated by schedulers and estimators. Moreover, all elements
-			are sorted and appear in correct order, according to the schema.
-		</xsl:comment>
-		<xsl:comment>
-			Schedulers and estimators information is loaded from
-			<xsl:value-of select="$additionalInformationFileName" />
-			file
-		</xsl:comment>
-
-		<xsl:apply-templates select="environment" />
-
-	</xsl:template>
-
-	<xsl:template match="environment">
-		<xsl:copy>
-			<xsl:copy-of select="@*" />
-			<xsl:apply-templates select="$nestedDoc//timeEstimationPlugin" />
-			<xsl:apply-templates select="resources" />
-			<xsl:apply-templates select="templates"/>
-		</xsl:copy>
-	</xsl:template>
-
-	<xsl:template match="resources">
-		<xsl:copy copy-namespaces="no">
-			<xsl:apply-templates select="//resources/computingResource" />
-			<xsl:element name="scheduler">
-				<xsl:attribute name="class">Cluster</xsl:attribute>
-				<xsl:attribute name="name">cluster</xsl:attribute>
-				<!-- In first version, for simplicity, we assume we have only one scheduler 
-					and one scheduling plugin. If $additionalInformationFileName contains more 
-					than one, the rest is ignored -->
-				<xsl:apply-templates select="$nestedDoc//schedulingPlugin[1]" />
-			</xsl:element>
-		</xsl:copy>
-	</xsl:template>
-
-	<xsl:template match="timeEstimationPlugin">
-		<xsl:element name="timeEstimationPlugin">
-			<xsl:element name="name">
-				<xsl:value-of select="name" />
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-
-	<xsl:template match="schedulingPlugin">
-		<xsl:variable name="pluginName" select="name" />
-		<xsl:element name="schedulingPlugin">
-			<xsl:element name="name">
-				<xsl:value-of select="$pluginName" />
-			</xsl:element>
-			<xsl:if test="frequency != ''">
-				<xsl:element name="frequency">
-					<xsl:value-of select="frequency" />
-				</xsl:element>
-			</xsl:if>
-		</xsl:element>
-		
-		
-		
-		<xsl:element name="managedComputingResources">
-			<!-- TODO: This parameter should be taken from somewhere. -->
-			<xsl:attribute name="include">false</xsl:attribute>
-
-			<!-- Find appropriate resources (identified by class, type and name(s)) 
-				and add their names here -->
-			<xsl:variable name="resourceClass">
-				<xsl:value-of select="resources/class" />
-			</xsl:variable>
-			<!-- <xsl:value-of select="$resourceClass"/> -->
-			<xsl:variable name="resourceType">
-				<xsl:value-of select="resources/type" />
-			</xsl:variable>
-			<!-- <xsl:value-of select="$resourceType"/> -->
-
-			<!-- Not clear why it does not work this way :/ -->
-			<!-- <xsl:variable name="resourceNames"><xsl:value-of select="resources/name"/></xsl:variable> -->
-			<xsl:variable name="resourceNames"
-				select="$nestedDoc//schedulingPlugin[name=$pluginName]/resources/name" />
-			
-			<xsl:choose>
-				<!-- Resource names are present -->
-				<xsl:when test="count($resourceNames) > 0">
-					<xsl:for-each select="$resourceNames">
-						<xsl:variable name="index" select="position()" />
-						<xsl:variable name="resourceName" select="." />
-						
-						<xsl:apply-templates select="$rootDoc//computingResource[(@name=$resourceName and @class=$resourceClass) or 
-							(@name=$resourceName and @class=$resourceClass and @type=$resourceType)]" mode="addManagedResorceName"/>
-					</xsl:for-each>
-				</xsl:when>
-				<!-- Resource names are NOT present -->					
-				<xsl:otherwise>
-					<xsl:apply-templates select="$rootDoc//computingResource[(@class=$resourceClass) or 
-							(@class=$resourceClass and @type=$resourceType)]" mode="addManagedResorceName"/>				
-				</xsl:otherwise>
-			</xsl:choose>	
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:function name="fun:hasManagedResources">
-		<xsl:param name="resourceClass"/>
-		<xsl:param name="resourceTypes"/>
-		<xsl:param name="resourceNames"/>
-		
-		
-	</xsl:function>
-	
-	<xsl:template match="energyEstimationPlugin">
-		<xsl:element name="energyEstimationPlugin">
-			<xsl:element name="name">
-				<xsl:value-of select="name" />
-			</xsl:element>
-		</xsl:element>
-	</xsl:template>
-
-
-	<xsl:template match="computingResourceTemplate | computingResource">
-		<xsl:copy copy-namespaces="no">
-			<xsl:copy-of select="@*" />
-			<!-- Find nested elements in appropriate order and copy them -->
-			
-			<!-- templateId -->
-			<xsl:apply-templates select="templateId" />
-			
-			<!-- resourceUnit -->
-			<xsl:apply-templates select="resourceUnit" />
-			<!-- parameter -->
-			<xsl:apply-templates select="parameter" />
-			
-			<xsl:variable name="debbFullPath" select="fun:getFullPath(.)"/>
-			<xsl:variable name="ancestors" select="ancestor::computingResourceTemplate"/>
-				
-			
-			<xsl:if test="$debbFullPath != '' and name(.) = 'computingResource' and count($ancestors) = 0">
-				<!-- fullPath parameter should be added only for computingResource nodes; for computingResourceTemplate it is not needed;
-				for computingResource nodes embedded in computingResourceTemplate nodes fullPath is not needed either -->
-				<xsl:element name="parameter">
-					<xsl:attribute name="name">fullPath</xsl:attribute>
-					<xsl:element name="value">
-						<xsl:value-of select="$debbFullPath" />
-					</xsl:element>
-				</xsl:element>
-			</xsl:if>				
-			
-			
-			<xsl:variable name="resourceClass" select="@class"/>
-			<xsl:variable name="resourceType" select="@type"/>
-			<xsl:variable name="resourceName" select="@name"/>
-			
-			<xsl:if test="not(templateId)">
-				<!-- Don't add energyEstimationPlugin information if there is a template defined for the computingResource.
-				 It will appear in the template. -->
-				<xsl:variable name="estimationPluginName" select="fun:getEnergyEstimator($resourceClass, $resourceType, $resourceName)"/>
-				<xsl:variable name="hasProfile" select="profile != ''"/>
-				<xsl:variable name="hasPowerProfile" select="profile/powerProfile != ''"/>
-	
-				<xsl:if test="$hasProfile = false() and $estimationPluginName != ''">
-					<xsl:element name="profile">
-						<xsl:element name="powerProfile">
-							<xsl:element name="energyEstimationPlugin">
-								<xsl:element name="name">
-									<xsl:value-of select="$estimationPluginName"/>
-								</xsl:element>
-							</xsl:element>
-						</xsl:element>
-					</xsl:element>
-				</xsl:if>
-			</xsl:if>
-			
-			
-			<!-- profile -->
-			<xsl:apply-templates select="profile" />
-			<!-- location -->
-			<xsl:apply-templates select="location" />
-			
-			<!-- computingResource -->
-			<xsl:apply-templates select="computingResource" />
-						
-		</xsl:copy>
-	</xsl:template>
-
-	<xsl:function name="fun:getEnergyEstimator">
-		<xsl:param name="computingResourceClass"/>
-		<xsl:param name="computingResourceType"/>
-		<xsl:param name="computingResourceName"/>
-		
-		<xsl:variable name="estimatorName" select="$nestedDoc//energyEstimationPlugin[(resources/class=$computingResourceClass and resources/type=$computingResourceType and resources/name=$computingResourceName) or
-		(resources/class=$computingResourceClass and resources/type=$computingResourceType) or
-		(resources/class=$computingResourceClass and resources/name=$computingResourceName) or
-		resources/class=$computingResourceClass]/name"/>
-
-		<xsl:value-of select="$estimatorName"/>
-	</xsl:function>
-	
-	<xsl:template match="computingResource" mode="addManagedResorceName">
-		<xsl:element name="resourceName">
-			<!-- <xsl:value-of select="../@name"></xsl:value-of> -->
-			<xsl:value-of select="@name"></xsl:value-of>
-		</xsl:element>
-	</xsl:template>
-
-	<xsl:template match="computingResource" mode="addEnergyEstimationPlugin">
-		<xsl:element name="energyEstimationPlugin">
-			<xsl:value-of select="name"></xsl:value-of>
-		</xsl:element>
-	</xsl:template>
-	
-	<xsl:function name="fun:getFullPath">
-		<xsl:param name="currentComputingResource"/>
-		<xsl:variable name="ancestors" select="$currentComputingResource/ancestor::computingResource/@name"/>
-
-		
-		<xsl:variable name="fullPath">
-			<xsl:text>/</xsl:text>
-			<xsl:for-each select="1 to count($ancestors)">
-				<xsl:variable name="index" select="." />
-				<xsl:value-of select="$ancestors[$index]"/>
-				<xsl:text>/</xsl:text>
-			</xsl:for-each>	
-			<xsl:value-of select="$currentComputingResource/@name"></xsl:value-of>	
-		</xsl:variable>
-		
-		<xsl:value-of select="$fullPath"/>
-	</xsl:function>
-	
-	<xsl:template match="resourceUnit | parameter | location">
-		<xsl:copy-of select="." copy-namespaces="no" />
-	</xsl:template>
-
-	<xsl:template match="profile">
-		<xsl:copy copy-namespaces="no">
-			<xsl:copy-of select="@*" />
-			
-			<xsl:apply-templates select="powerProfile" />
-			<xsl:apply-templates select="airThroughputProfile" />
-			<xsl:apply-templates select="waterThroughputProfile" />
-		</xsl:copy>
-	</xsl:template>
-
-	<xsl:template match="powerProfile">
-		<xsl:copy copy-namespaces="no">
-			<xsl:variable name="resourceClass" select="../../@class"></xsl:variable>
-			<xsl:variable name="resourceType" select="../../@type"></xsl:variable>
-			<xsl:variable name="resourceNames" select="../../@name"></xsl:variable>
-
-			<xsl:choose>
-				<!-- Resource names are present -->
-				<xsl:when test="count($resourceNames) > 0">
-					<xsl:for-each select="$resourceNames">
-						<xsl:variable name="index" select="position()" />
-						<xsl:variable name="resourceName" select="." />
-						<xsl:choose>
-							<!-- Resource type is present -->
-							<xsl:when test="$resourceType != ''">
-								<xsl:apply-templates
-									select="$nestedDoc//energyEstimationPlugin[resources/class=$resourceClass and resources/type=$resourceType and resources/name=$resourceName]" />
-							</xsl:when>
-							<xsl:otherwise>
-								<xsl:apply-templates
-									select="$nestedDoc//energyEstimationPlugin[resources/class=$resourceClass and resources/name=$resourceName]" />
-							</xsl:otherwise>
-						</xsl:choose>
-					</xsl:for-each>
-				</xsl:when>
-				<!-- No resource names -->
-				<xsl:otherwise>
-					<xsl:choose>
-						<!-- Resource type is present -->
-						<xsl:when test="$resourceType != ''">
-							<xsl:apply-templates
-								select="$nestedDoc//energyEstimationPlugin[resources/class=$resourceClass and resources/type=$resourceType]" />
-						</xsl:when>
-						<xsl:otherwise>
-							<xsl:apply-templates
-								select="$nestedDoc//energyEstimationPlugin[resources/class=$resourceClass]" />
-						</xsl:otherwise>
-					</xsl:choose>
-				</xsl:otherwise>
-			</xsl:choose>
-			
-			<!-- Copy all children of powerProfile -->
-			<xsl:copy-of select="@*|node()" />
-		</xsl:copy>
-
-	</xsl:template>
-
-	<xsl:template match="airThroughputProfile">
-		<xsl:copy copy-namespaces="no">
-			<!-- Copy all children of airThroughputProfile -->
-			<xsl:copy-of select="@*|node()" />
-		</xsl:copy>		
-	</xsl:template>
-
-	<xsl:template match="waterThroughputProfile">
-		<xsl:copy copy-namespaces="no">
-			<!-- Copy all children of waterThroughputProfile -->
-			<xsl:copy-of select="@*|node()" />
-		</xsl:copy>		
-	</xsl:template>
-	
-	<xsl:template match="templates">
-		<xsl:copy copy-namespaces="no">
-			<xsl:apply-templates/>	
-		</xsl:copy>
-		
-	</xsl:template>
-	
-	<xsl:template match="@*|node()">
-		<xsl:copy>
-			<xsl:apply-templates select="@*" />
-			<xsl:apply-templates />
-		</xsl:copy>
-	</xsl:template>
-
-</xsl:stylesheet>
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DCWormsResSchema.xsd
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/DCWormsResSchema.xsd	(revision 964)
+++ 	(revision )
@@ -1,424 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-	elementFormDefault="qualified" attributeFormDefault="unqualified">
-		
-		<xs:complexType name="pluginType">
-		<xs:annotation>
-			<xs:documentation>Base plugin type. 
-			Plugins allow configuring and adapting the simulation framework to his/her experiment 
-			starting from modeling job performance, through method of calculating energy estimation up to implementation of scheduling policies
-			Name of the plugin specifies the JAVA class that implements dedicated interface.</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="name" type="xs:string"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="timeEstimationPluginType">
-		<xs:annotation>
-			<xs:documentation>TimeEstimationPlugin derived from pluginType. 
-			Time estimation plugin provides means to include specific application performance models during simulations
-			and allows introducing specific ways of calculating task execution time.</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:restriction base="pluginType">
-				<xs:sequence>
-					<xs:element name="name" type="xs:string" default="ExecTimeEstimationPlugin"></xs:element>
-					<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-				</xs:sequence>
-			</xs:restriction>
-		</xs:complexContent>	
-	</xs:complexType>
-	
-	<xs:complexType name="resourceType">
-		<xs:annotation>
-			<xs:documentation>Base resource type. 
-			It allows to define simulation entities like computing resources, devices, schedulers.
-			Attributes: class - determines the component of the architecture i.e. rack, processor, memory, storage etc.
-			type - type of resource; for instance, continuous for memory, bandwidth, etc. and discrete for processors
-			name - unique resource identifier, if not specified it will be generated by the simulator in the following manner: class + "_" + subsequent_natural_number
-			</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="description" type="xs:string" minOccurs="0"></xs:element>
-		</xs:sequence>
-		<xs:attribute name="class" type="xs:string" use="required"/>
-		<xs:attribute name="type" type="xs:string" use="optional"/>
-		<xs:attribute name="name" type="xs:string" use="optional"/>
-	</xs:complexType>
-
-	<xs:complexType name="computingResourceType">
-		<xs:annotation>
-			<xs:documentation> ComputingResource derived from resourceType
-			Computing resource specifies resources that are able to perform computing operations. 
-			From the simulator point of view computing resource is everything that is/contains processing element.
-			Hence, all entities like core, processor, computing node, as well as those which aggregate them (like shelf, rack, container etc.)
-			should be define using this type. This way of description provides flexibility in defining system architecture
-			and allows to build hierarchy of resources that corresponds to real world.
-			Attributes: groupId - allows to group resources of the given class in the logical structures that can be used during binding them with schedulers
-			count - defines number of resources of the given class</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="resourceType">
-				<xs:sequence>
-					<xs:choice>
-						<xs:sequence>
-							<xs:element name="resourceUnit" type="resourceUnitType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-							<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-							<xs:element name="profile" type="profileType" minOccurs="0" maxOccurs="1"></xs:element>
-							<xs:element name="location" type="locationType" minOccurs="0" maxOccurs="1"></xs:element>
-							<xs:element name="computingResource" type="computingResourceType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-						</xs:sequence>
-						<xs:sequence>
-							<xs:element name="templateId" type="xs:string"/>
-							<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-							<xs:element name="location" type="locationType" minOccurs="0" maxOccurs="1"></xs:element>
-						</xs:sequence>
-					</xs:choice>
-				</xs:sequence>
-				<xs:attribute name="groupId" type="xs:integer" use="optional"/>			
-				<xs:attribute name="count" type="xs:integer" use="optional"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	
-	<xs:complexType name="computingResourceTemplateType">
-		<xs:annotation>
-			<xs:documentation>ComputingResourceTemplate derived from resourceType.
-			It allows user to define model of computing resource component that may constitute other computing resources
-			Computing resource templates can be then referred in computing resource definition</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="resourceType">
-				<xs:sequence>
-					<xs:element name="resourceUnit" type="resourceUnitType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-					<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-					<xs:element name="profile" type="profileType" minOccurs="0" maxOccurs="1"></xs:element>
-					<xs:element name="computingResource" type="computingResourceType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="schedulerType">
-		<xs:annotation>
-			<xs:documentation>Scheduler derived from resourceType.
-			It allows to model scheduling entity responsible for managing resources.</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="resourceType">
-				<xs:sequence>
-					<xs:element name="schedulingPlugin" type="schedulingPluginType" minOccurs="0" maxOccurs="1"></xs:element>
-					<xs:element name="queues" type="queueListType" minOccurs="0"></xs:element>
-					<xs:choice minOccurs="1" maxOccurs="unbounded">
-						<xs:element name="scheduler" type="schedulerType"></xs:element>
-						<xs:element name="managedComputingResources" type="managedComputingResourcesType"></xs:element>
-					</xs:choice>
-					<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	
-	<xs:complexType name="schedulingPluginType">
-		<xs:annotation>
-			<xs:documentation>SchedulingPlugin derived from pluginType. 
-			Scheduling plugins allow plugging scheduling algorithms into the simulated environment.
-			Elements: frequency - is used to enable scheduling periodically; it specifies the time interval (in seconds by default) between subsequent scheduling invocations
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="pluginType">
-				<xs:sequence>
-					<xs:element name="frequency" type="doubleValueWithUnitType" minOccurs="0" maxOccurs="1"></xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	
-	<xs:complexType name="resourceUnitType">
-		<xs:annotation>
-			<xs:documentation>Resource unit is used to define non-computing resource like memory, storage etc.
-			Elements: amount - represents concrete amount (values) of specific resource unit</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="resourceType">
-				<xs:sequence>
-					<xs:element name="amount" type="doubleValueWithUnitType"/>
-					<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="doubleValueWithUnitType">
-		<xs:annotation>
-			<xs:documentation>DoubleValueWitUnit derived from double. Allows providing units in which the given value is expressed
-			Attributes: unit - indicates appropriate units, for instance: seconds, watts, bytes etc. </xs:documentation>
-		</xs:annotation>
-		<xs:simpleContent>
-			<xs:extension base="xs:double">
-				<xs:attribute name="unit" type="xs:string" use="optional"/>
-			</xs:extension>	
-		</xs:simpleContent>	
-	</xs:complexType>
-	
-	<xs:complexType name="stringValueWithUnitType">
-		<xs:annotation>
-			<xs:documentation>StringValueWitUnit derived from string. Allows providing units in which the given value is expressed
-			Attributes: unit - indicates appropriate units. </xs:documentation>
-		</xs:annotation>
-		<xs:simpleContent>
-			<xs:extension base="xs:string">
-				<xs:attribute name="unit" type="xs:string" use="optional"/>
-			</xs:extension>	
-		</xs:simpleContent>	
-	</xs:complexType>
-	
-	<xs:complexType name="queueListType">
-		<xs:annotation>
-			<xs:documentation>Profile acts as a container for resource profiles: power and air throughput</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="queue" type="queueType" minOccurs="1" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="queueType">
-		<xs:annotation>
-			<xs:documentation>Profile acts as a container for resource profiles: power and air throughput</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="name" type="xs:string"></xs:element>
-			<xs:element name="priority" type="xs:int" minOccurs="0"></xs:element>
-			<xs:element name="reservation" type="xs:boolean" minOccurs="0" ></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="managedComputingResourcesType">
-		<xs:annotation>
-			<xs:documentation>ManagedComputingResource type specifies computing resources controlled by scheduler.
-			They can be provided either by listing their names or listing the group ids which they belong to.
-			Attributes: include - specifies whether the given resource layer (listed resources) can be allocated by the scheduler
-			In other words, false (default) value indicates that scheduler maneges only the subcomponents of the listed resources;
-			true value determines that also listed resources will be under the control of the defined scheduler</xs:documentation>
-		</xs:annotation>
-		<xs:choice>
-			<xs:element name="resourceName" type="xs:string" minOccurs="1" maxOccurs="unbounded"></xs:element>
-			<xs:element name="resourceGroupId" type="xs:string" minOccurs="1" maxOccurs="unbounded"></xs:element>
-		</xs:choice>
-		<xs:attribute name="include" type="xs:boolean" default="false"/>
-	</xs:complexType>
-
-	<xs:complexType name="energyEstimationPluginType">
-		<xs:annotation>
-			<xs:documentation>EnergyEstimationPlugin derived from pluginType. 
-			Energy estimation plugin is used to estimate energy consumption of the given computing resource. 
-			It has access to the detailed resource description including power and air throughput profiles
-			and application characteristics running on a given resource</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="pluginType"/>
-		</xs:complexContent>
-	</xs:complexType>
-	
-	<xs:complexType name="profileType">
-		<xs:annotation>
-			<xs:documentation>Profile acts as a container for resource profiles: power and air throughput</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="powerProfile" type="powerProfileType" minOccurs="0"></xs:element>
-			<xs:element name="airThroughputProfile" type="airThroughputProfileType" minOccurs="0"></xs:element>
-			<xs:element name="thermalProfile" type="thermalProfileType" minOccurs="0"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="powerProfileType">
-		<xs:annotation>
-			<xs:documentation>Power profile provides energyEstimation plugin, powerStates and other power-related parameters definition</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="energyEstimationPlugin" type="energyEstimationPluginType" minOccurs="0"></xs:element>
-			<xs:element name="powerStates" type="powerStatesType" minOccurs="0"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="powerStatesType">
-		<xs:annotation>
-			<xs:documentation>PowerState type act as a container for power states. It contains energy-related characteristics of the computing resource</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="powerState" type="powerStateType" minOccurs="1" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="powerStateType">
-		<xs:annotation>
-			<xs:documentation>Power state defines available (for computing resource) power states.
-			Elements: name - denotes name of the given power state
-			powerUsage - defines power consumption in the given state
-			transition - specifies possible power states transitions from the given power state</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="name" type="xs:string"></xs:element>
-			<xs:element name="powerUsage" type="doubleValueWithUnitType" minOccurs="0" maxOccurs="1"></xs:element>
-			<xs:element name="transition" type="powerStatesTransitionType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="powerStatesTransitionType">
-		<xs:annotation>
-			<xs:documentation>Description of power states transtition
-			Elements: to - denotes name of target power state
-			powerUsage - defines transition cost in the form of power consumption
-			time - specifies transition time</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="to" type="xs:string"></xs:element>
-			<xs:element name="powerUsage" type="doubleValueWithUnitType"></xs:element>
-			<xs:element name="time" type="doubleValueWithUnitType"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="airThroughputEstimationPluginType">
-		<xs:annotation>
-			<xs:documentation>AirThroughputEstimationPlugin derived from pluginType. 
-			Air Throughput plugin is used to estimate air flow value based on the defined air throughput states</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="pluginType"/>
-		</xs:complexContent>
-	</xs:complexType>
-	
-	<xs:complexType name="airThroughputProfileType">
-		<xs:annotation>
-			<xs:documentation>AirThrouhputProfile provides airThroughputEstimation plugin, airThroughputStates and other airThroughput-related parameters definition</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="airThroughputEstimationPlugin" type="airThroughputEstimationPluginType" minOccurs="0"></xs:element>
-			<xs:element name="airThroughputStates" type="airThroughputStatesType" minOccurs="0"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="airThroughputStatesType">
-		<xs:annotation>
-			<xs:documentation>AirThroughputStates type act as a container for air throughput states.</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="airThroughputState" type="airThroughputStateType" minOccurs="1" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-		<xs:attribute name="name" type="xs:string" use="optional"/>
-	</xs:complexType>
-	
-	<xs:complexType name="airThroughputStateType">
-		<xs:annotation>
-			<xs:documentation>Air througput state provides means to define air flow level. 
-			It can represent, for instance, a fan working state</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="name" type="xs:string"></xs:element>
-			<xs:element name="value" type="doubleValueWithUnitType"></xs:element>
-			<xs:element name="powerUsage" type="doubleValueWithUnitType" minOccurs="0"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="temperatureEstimationPluginType">
-		<xs:annotation>
-			<xs:documentation>TemperatureEstimationPlugin derived from pluginType. 
-			Temperature plugin is used to estimate temperature based on the defined resource characteristics</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="pluginType"/>
-		</xs:complexContent>
-	</xs:complexType>
-	
-	<xs:complexType name="thermalProfileType">
-		<xs:annotation>
-			<xs:documentation>ThermalProfile provides temperatureEstimation plugin,  and other thermal-related parameters definition</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="temperatureEstimationPlugin" type="temperatureEstimationPluginType" minOccurs="0"></xs:element>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="locationType">
-		<xs:annotation>
-			<xs:documentation>The location type describes placement of the computing resource using 3 coordinates</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="horizontal" type="xs:long"/>
-			<xs:element name="vertical" type="xs:long"/>
-			<xs:element name="depth" type="xs:long"/>
-			<xs:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"></xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	
-	<xs:complexType name="parameterType">
-		<xs:annotation>
-			<xs:documentation>Parameter of resource. Allows defining additional resource parameters.
-			Contains a list of parameter values or a list of key-value pairs.
-			Attribute : name - denotes parameter name</xs:documentation>
-		</xs:annotation>
-		<xs:choice>
-			<xs:element name="value" type="stringValueWithUnitType" minOccurs="0" maxOccurs="unbounded"/>
-			<xs:sequence>
-				<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
-					<xs:complexType>
-						<xs:annotation>
-							<xs:documentation>Property of parameter. Allows defining additional properties of parameter as a list of values.
-							Attribute : name - denotes property name</xs:documentation>
-						</xs:annotation>
-						<xs:sequence>
-							<xs:element name="value" type="stringValueWithUnitType" minOccurs="0" maxOccurs="unbounded"/>
-						</xs:sequence>
-						<xs:attribute name="name" type="xs:string" use="required"/>
-					</xs:complexType>
-				</xs:element>
-			</xs:sequence>
-		</xs:choice>
-		<xs:attribute name="name" type="xs:string" use="required"/>
-	</xs:complexType>
-	
-	<xs:element name="environment">
-		<xs:annotation>
-			<xs:documentation>Schema describing simulation environment</xs:documentation>
-		</xs:annotation>
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element name="description" type="xs:string" minOccurs="0" ></xs:element>
-				<xs:element name="timeEstimationPlugin" type="timeEstimationPluginType" minOccurs="0" maxOccurs="1"></xs:element>
-				<xs:element name="resources">
-					<xs:annotation>
-						<xs:documentation>Description of resources</xs:documentation>
-					</xs:annotation>
-					<xs:complexType>
-						<xs:sequence>
-							<xs:element name="description" type="xs:string" minOccurs="0" ></xs:element>
-							<xs:element name="computingResource" type="computingResourceType" maxOccurs="unbounded"/>
-							<xs:element name="scheduler" type="schedulerType" maxOccurs="unbounded"/>
-						</xs:sequence>
-					</xs:complexType>
-				</xs:element>
-				<xs:element name="templates" minOccurs="0">
-					<xs:annotation>
-						<xs:documentation>Definition of computing resource templates that can/will be used in resource description section </xs:documentation>
-					</xs:annotation>
-					<xs:complexType>
-						<xs:sequence>
-							<xs:element name="description" type="xs:string" minOccurs="0" ></xs:element>
-							<xs:element name="computingResourceTemplate" type="computingResourceTemplateType" maxOccurs="unbounded"/>
-						</xs:sequence>
-					</xs:complexType>
-				</xs:element>
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-
-</xs:schema>
Index: DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/PLMXMLSchema.xsd
===================================================================
--- DCWoRMS/branches/coolemall/src/test/DEBBTranslator/xml/PLMXMLSchema.xsd	(revision 1086)
+++ 	(revision )
@@ -1,7596 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-Copyright 2006 UGS Corp.  All Rights Reserved.
-This software and related documentation are proprietary to UGS Corp.
--->
-<xsd:schema targetNamespace="http://www.plmxml.org/Schemas/PLMXMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="en">
-  <xsd:annotation>
-    <xsd:documentation source="http://www.plmxml.org/Schemas/PLMXMLSchema/History">
-      <plm:SchemaChange author="davidj" date="2005-05-11" version="6.0.1.26">
-        <plm:Description>
-        Add CGM to RepresentationFormatType
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/simpleType[@name='RepresentationFormatType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-05-11" version="6.0.1.26">
-        <plm:Description>
-        Add Property and PropertyGroup. 
-        Rename MassPropertyType to MassPropertiesType.
-        Add LengthProperty, MassProperty, and Colour.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='PropertyBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='PropertyGroupType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='MassPropertiesType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LengthPropertyType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='MassPropertyType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ColourType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-05-11" version="6.0.1.26">
-        <plm:Description>
-        Add propertyRefs attribute and PropertyGroup sub-element to:
-        Structure, StructureRevision, StructureRevisionView, GDE, StructureUsage, StructureView.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureRevisionBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureRevisionViewBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='GDEBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureUsageBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureViewType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-05-11" version="6.0.1.26">
-        <plm:Description>
-        Add occurrenceId attribute to OccurrenceType.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='OccurrenceType']/attribute[@name='occurrenceId']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="cherevac" date="2005-06-10" version="6.0.1.26">
-        <plm:Description>
-        Add support for ModelViews.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='SectionType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductViewType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='ProductViewUsageType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-06-15" version="6.0.1.26">
-        <plm:Description>
-        Add Occurrence Filter elements.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='OccurrenceFilterBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='SetFilterType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='GroupFilterType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='PropertyFilterType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProximityZoneType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ZoneFilterType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-06-15" version="6.0.1.26">
-        <plm:Description>
-        Change sourceRef attribute to optional in ConfiguredOccurrenceGroup.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='ConfiguredOccurrenceGroupType']/attribute[@name='sourceRef']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-06-15" version="6.0.1.26">
-        <plm:Description>
-        Add Material Properties, and allow Properties of CompoundRep.
-        Rename VolumeType, DensityType, and CentreOfMassType to DeprecatedVolumeType,
-        DeprecatedDensityType, and DeprecatedCentreOfMassType. Introduce new types for
-        Volume, Density, and CentreOfMass.  
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='ThermalExpansionCoefficientType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ThermalConductivityType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='SpecificHeatCapacityType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ModulusOfElasticityType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='PoissonsRatioType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='YieldStressType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='UltimateStressType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='UltimateElongationType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='SurfaceAreaType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='VolumeType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='CentreOfMassType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='InertiaType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DensityType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='CompoundRepType']/element[@ref='plm:PropertyGroup']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-06-21" version="6.0.1.26">
-        <plm:Description>
-        Derive Representation and CompoundRep from PropertiesBase instead of AttribOwnerBase
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='RepresentationType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='CompoundRepType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-06-21" version="6.0.1.26">
-        <plm:Description>
-        Add DisplayPreferences Property
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='DisplayPreferencesType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="craigw" date="2005-06-21" version="6.0.1.26">
-        <plm:Description>
-        Add addition internal Code Generator app info data to DeprecatedVolumeType, DeprecatedDensityType and
-        DeprecatedCentreOfMassType. 
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='DeprecatedVolumeType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DeprecatedDensityType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DeprecatedCentreOfMassType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="craigw" date="2005-08-10" version="6.0.1.26">
-        <plm:Description>
-        Add 'default' and 'state' attributes to support default and active ProductViews.    
-        </plm:Description>
-        <plm:Reference locationRef="..//schema//complexType[@name='ProductViewType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="craigw" date="2005-08-10" version="6.0.1.26">
-        <plm:Description>
-        Add 'linkedGroupRef' attribute to to Occurrence support OccurrenceGroup in the context of a Composition.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema//complexType[@name='OccurrenceType']/attribute[@name='linkedGroupRef']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="craigw" date="2005-08-10" version="6.0.1.26">
-        <plm:Description>
-        Supports consistent loading and visualisation of products across different applications through new 
-        LoadOptions element referenced from DocumentHeaderType.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionModeType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionErrorActionType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionComponentSetType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionRevisionType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionLinkedComponentsType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionPartFamilyComponentsType']"/>
-        <plm:Reference locationRef="..//schema/simpleType[@name='LoadOptionPreferredRepresentationsScopeType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LoadOptionPreferredRepresentationType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LoadOptionPreferredRepresentationsType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LoadOptionSearchPathType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LoadOptionSearchPathsType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LoadOptionsType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DocumentHeaderType']/element[@name='LoadOptions']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="craigw" date="2005-10-20" version="6.0.1.26">
-        <plm:Description>
-        A new LogicalExpression has been added to the base schema - 'PathIs'. This 
-        type allows an Instance path through a hierarchical structure to be defined that 
-        must be matched in order to return 'true'.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='PathIsType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-10-17" version="6.0.1.26">
-        <plm:Description>
-        Add RepresentationEntity, EntityPropertyGroup, and Visibility Property. Allow EntityRef
-        as subelement of Representation and CompoundRep. Allow RepresentationEntity and
-        EntityPropertyGroup as subelement of StructureRevisionView. Allow EntityPropertyGroup
-        as subelement of StructureUsage.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='RepresentationEntityType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='EntityPropertyGroupType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='VisibilityType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2005-11-01" version="6.0.1.26">
-        <plm:Description>
-        Allow Section and ConstructionGeometry as sub-elements of PLMXML by adding
-        substitutionGroups.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='SectionType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ConstructionGeometryType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-01-03" version="6.0.1.32">
-        <plm:Description>
-        Add "software" and "processorGateway" to GDERelationshipType
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/simpleType[@name='GDERelationshipType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="cherevac" date="2006-02-22" version="6.0.1.039">
-        <plm:Description>
-        Add "type" and "baseRef" attributes to Representation and CompoundRep
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='RepresentationType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='CompoundRepType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-03-16" version="6.0.1.039">
-        <plm:Description>
-        Add "targetRef" and "pathRefs" to GDEReferenceType. Deprecate EntityRef sub-element.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='GDEReferenceType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="howardmu" date="2006-03-16" version="6.0.1.039">
-        <plm:Description>
-        Add "mass" to GDERelationshipType"
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='GDERelationshipType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="howardmu" date="2006-06-01" version="6.0.1.59">
-        <plm:Description>
-        Add ViewControl to PLMXML element
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='ViewControlType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='PLMXMLType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-06-01" version="6.0.1.59">
-        <plm:Description>
-        Add CGR to RepresentationFormatType
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/simpleType[@name='RepresentationFormatType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-06-01" version="6.0.1.59">
-        <plm:Description>
-        Add unitRef to ProductType
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-06-22" version="6.0.1.59">
-        <plm:Description>
-        Add Discipline, DisciplineLevel and DisciplineRelation. Modify Organisation and User.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='DisciplineType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DisciplineLevelType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DisciplineRelation']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='OrganisationType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='UserType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-06-29" version="6.0.1.59">
-        <plm:Description>
-        Add CoordinateSystemDisplay, PointDisplay, LineDisplay and Translucency
-        Properties. Allow PropertyGroup as sub-element of Geometry.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='CoordinateSystemDisplayType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='PointDisplayType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='LineDisplayType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='TranslucenceType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='GeometryBase']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-07-26" version="6.0.1.59">
-        <plm:Description>
-        Add "ruleRefs" to StructureRevisionView
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureRevisionViewBase']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-09-01" version="6.0.1.78">
-        <plm:Description>
-        Add OccurrenceControl, OccurrenceControlRevision, and SymbolicOccurrence.
-        Add attributes to Occurrence and ProductRevisionView. 
-        Allow SymbolicOccurrences as sub-elements of ProductView and StructureRevisionView
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='OccurrenceControlType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='OccurrenceControlRevisionType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='SymbolicOccurrenceType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='OccurrenceType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureRevisionViewBase']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductViewType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-09-29" version="6.0.1.78">
-        <plm:Description>
-        Add Suppression Property.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='SuppressionType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-10-05" version="6.0.1.78">
-        <plm:Description>
-        Add Transform as sub-element of CompoundRep, and transformRef attribute.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='CompoundRepType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-11-01" version="6.0.1.85">
-        <plm:Description>
-        Add Layer Property.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='LayerType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-11-01" version="6.0.1.85">
-        <plm:Description>
-        Add values to PointStyle enum.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/simpleType[@name='PointStyleEnum']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-11-03" version="6.0.1.85">
-        <plm:Description>
-        Add TraceabilityRelation
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='TraceabilityRelationType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2007-01-11" version="6.0.1.105">
-        <plm:Description>
-        Add Design, DesignRevision, DesignRevisionView and RepresentedByRelation.
-        Add "designRequired" and "source" attributes to Product. Add "primaryDesignRef"
-        attribute to ProductRevision.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='DesignType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DesignRevisionType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DesignRevisionViewType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='RepresentedByRelationType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="craigw" date="2007-01-11" version="6.0.1.105">
-        <plm:Description>
-        Clarify in-line documentation for UserData.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='UserDataElementType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="davidj" date="2006-01-19" version="6.0.1.108">
-        <plm:Description>
-        Add Requirement and RequirementRevision elements.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='RequirementType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='RequirementRevisionType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="howardmu" date="2007-02-28" version="6.0.1.108">
-        <plm:Description>
-        Add the value "pose" to the ProductViewUsageType enum for Robotics.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/simpleType[@name='ProductViewUsageType']/enumeration[@value='pose']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="howardmu" date="2007-02-28" version="6.0.1.108">
-        <plm:Description>
-        Add DefinitionRelation. Deprecate primaryDesignRef from ProductRevision.
-        Add source and designRequired to ProductRevision. Add designRequired to
-        ProductRevisionView and StructureUsage. Add primaryDesign to
-        RepresentedByRelation.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductRevisionType']/attribute[@name='primaryDesignRef']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductRevisionType']/attribute[@name='source']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductRevisionType']/attribute[@name='designRequired']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='ProductRevisionViewType']/attribute[@name='designRequired']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='StructureUsageBase']/attribute[@name='designRequired']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='RepresentedByRelationType']/attribute[@name='primaryDesign']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DefinitionRelationType']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="cherevac" date="2006-03-01" version="6.0.1.x">
-        <plm:Description>
-        Add Derived element, allow Fix and Derived in VaruantRule.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='DerivedType']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='VariantRule']"/>
-      </plm:SchemaChange>
-      <plm:SchemaChange author="howardmu" date="2007-06-20" version="6.0.1.127">
-        <plm:Description>
-        Add displayAnnotations and displayGeometry to DisplayPreferences.
-        Add propertyRefs to GDEInstanceGroup.
-        Allow DisplayPreferences under PropertyGroup under GDEInstanceGroup.
-        </plm:Description>
-        <plm:Reference locationRef="..//schema/complexType[@name='DisplayPreferencesType']/attribute[@name='displayAnnotations']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='DisplayPreferencesType']/attribute[@name='displayGeometry']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='GDEInstanceGroupType']/attribute[@name='propertyRefs']"/>
-        <plm:Reference locationRef="..//schema/complexType[@name='GDEInstanceGroupType']/element[@ref='plm:PropertyGroup']"/>
-      </plm:SchemaChange>
-    </xsd:documentation>
-    <xsd:documentation>
-    
-                        PLM XML Schema
-                        
-    </xsd:documentation>
-    <xsd:appinfo source="http://www.plmxml.org/Schemas/PLMXMLSchema">
-      <plm:SchemaInfo name="PLMXMLSchema.xsd" date="2007-01-19" version="6.0" status="release"/>
-    </xsd:appinfo>
-  </xsd:annotation>
-  <xsd:attributeGroup name="idGroup">
-    <xsd:annotation>
-      <xsd:documentation>
-      The 'id' attribute is used for references between elements. It 
-      should not be use to encode other information.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="id" type="xsd:ID" use="optional"/>
-  </xsd:attributeGroup>
-  <!-- -->
-  <xsd:complexType name="IdBase" abstract="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=IdObject</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:attributeGroup ref="plm:idGroup"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="DescriptionType">
-    <xsd:restriction base="xsd:string"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="anyURIType">
-    <xsd:annotation>
-      <xsd:documentation>
-      plm:anyURIType is used in place of xsd:anyURI, since we want to allow
-      filenames as well as genuine URIs.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="ApplicationRefType">
-    <xsd:annotation>
-      <xsd:documentation>
-      The ApplicationRef element is meant to relate the parent element (Product, 
-      Representation, etc) back to the owning entity in the sending  application.
-
-      Attributes:
-
-      application:  the context in which the contents of the label and version attributes 
-                    make sense. Whether this field includes an application version number 
-                    is up to the application, as long as it starts with something 
-                    identifiable to the sending application.
-
-      label:        the string which identifies the application entity - the value of
-                    this field is only meaningful to the sending/authoring application.
-                    The receiving application can compare the contents of the attribute
-                    to test if two entities are the 'same' entity. But the actual value
-                    is meaningless to the receiving application.
-
-      version:      the optional string attribute which identifies the version of the
-                    application entity. This attribute can only be used to test if the
-                    versions of an entity are the same (i.e. the test is only meaningful
-                    if the label attribute values are the same). No version ordering can
-                    be deduced from the value. Similar to the label attribute, the 
-                    version attribute contents are meaningless to the receiving 
-                    application.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="application" type="xsd:string" use="optional"/>
-    <xsd:attribute name="label" type="xsd:string" use="required"/>
-    <xsd:attribute name="version" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="DescriptionBase" abstract="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=DescriptionObject</xsd:appinfo>
-      <xsd:documentation>
-      The DescriptionBase type is an abstract base type for PLM XML types which have
-      optional description and ApplicationRef.
-      
-      Attributes:
-      
-      name:            descriptive or display name
-
-      Sub-elements:
-
-      Description      Readable textual description of the element.
-      ApplicationRef   A means of uniquely identifying the element in terms understood by
-                       the sending system. More than one is allowed (at most one per
-                       Application).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:sequence>
-          <xsd:element name="Description" type="plm:DescriptionType" minOccurs="0"/>
-          <xsd:element name="ApplicationRef" type="plm:ApplicationRefType" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="name" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="AttribOwnerBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements which have PLMXML Attributes, i.e. elements
-      derived from plm:AttributeBase.
-      
-      Attributes:
-        
-      attributeRefs: reference to Attributes
-               
-      Elements:
-      
-      Attribute:     any element derived from AttributeBase.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:DescriptionBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Attribute" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="attributeRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Attribute"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AttribOwner" type="plm:AttribOwnerBase"/>
-  <!-- -->
-  <xsd:attributeGroup name="referenceGroup">
-    <xsd:attribute name="location" type="plm:anyURIType" use="optional">
-      <xsd:annotation>
-        <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-      </xsd:annotation>
-    </xsd:attribute>
-    <xsd:attribute name="load" type="xsd:boolean" default="false"/>
-  </xsd:attributeGroup>
-  <!-- -->
-  <xsd:simpleType name="uriReferenceListType">
-    <xsd:list itemType="plm:anyURIType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="IntegerListType">
-    <xsd:list itemType="xsd:integer"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="BooleanListType">
-    <xsd:list itemType="xsd:boolean"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="FloatListType">
-    <xsd:list itemType="xsd:float"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="DoubleListType">
-    <xsd:list itemType="xsd:double"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="VectorType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:length value="3"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="DirectionType">
-    <xsd:restriction base="plm:VectorType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="PositionType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:VectorType">
-        <xsd:attributeGroup ref="plm:idGroup"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="NormalType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:VectorType">
-        <xsd:attributeGroup ref="plm:idGroup"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="MatrixType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:minLength value="1"/>
-      <xsd:maxLength value="16"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="TransformationType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="general"/>
-      <xsd:enumeration value="general3"/>
-      <xsd:enumeration value="rotate"/>
-      <xsd:enumeration value="translate"/>
-      <xsd:enumeration value="scale"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="TransformType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:MatrixType">
-        <xsd:attributeGroup ref="plm:idGroup"/>
-        <xsd:attribute name="type" type="plm:TransformationType" default="general"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <xsd:element name="Transform" type="plm:TransformType"/>
-  <!-- -->
-  <xsd:complexType name="BoxBoundType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a legacy box type. The 'Bound' element should be used.
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="LowCorner" type="plm:VectorType"/>
-      <xsd:element name="HighCorner" type="plm:VectorType"/>
-    </xsd:sequence>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="SphereBoundType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a legacy sphere bound type. The 'Bound' element should be used.
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="Radius" type="xsd:double"/>
-      <xsd:element name="Centre" type="plm:VectorType"/>
-    </xsd:sequence>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="BoundingType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="box"/>
-      <xsd:enumeration value="sphere"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="ZoneBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is an abstract base type for elements representing a subset of
-      3D space.
-      
-      Attributes:
-      
-      transformRef:  Optional transform, to apply to data in derived types.
-                     For example, the data in a Bound can define an axis-
-                     aligned box. By using a Transform, this can then 
-                     represent a non-axis-aligned box.
-      
-      Elements:
-      
-      Transform:     Optional transform. Do not use both transformRef and
-                     Transform sub-element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Transform" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="transformRef" type="xsd:IDREF" use="optional" plm:refType="plm:Transform"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Zone" type="plm:ZoneBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:complexType name="BoundType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a box or sphere-shaped bound (zone) in 3-space.
-      
-      Attributes:
-      
-      type:          'box' or 'sphere'
-      values:        6 or 4 doubles. If a box, these are the coordinates of
-                     the centre, followed by xwidth/2, ywidth/2, zwidth/2.
-                     If a sphere, these are centre, radius.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ZoneBase">
-        <xsd:attribute name="type" type="plm:BoundingType" default="box"/>
-        <xsd:attribute name="values" type="plm:DoubleListType" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Bound" type="plm:BoundType" substitutionGroup="plm:Zone"/>
-  <!-- -->
-  <xsd:complexType name="PlanarZoneType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a Zone defined by the intersection of a number of halfspaces. Each
-      Halfspace is defined as the area of space behind a Plane (i.e. away from the
-      Plane normal). 
-      
-      If there is only one Plane, the Zone is a halfspace.
-      
-      Elements:
-      
-      Plane:         Plane defining a halfspace
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ZoneBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Plane" maxOccurs="unbounded"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PlanarZone" type="plm:PlanarZoneType" substitutionGroup="plm:Zone"/>
-  <!-- -->
-  <!--*** Attributes -->
-  <!-- -->
-  <xsd:simpleType name="IntegerFieldType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:integer"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="IntegerFieldListType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="plm:IntegerListType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="RealFieldType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:double"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="RealFieldListType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="plm:DoubleListType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="StringFieldType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LogicalFieldType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:boolean"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="VectorFieldType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">createClass=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="plm:VectorType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="CoordinateFieldType">
-    <xsd:restriction base="plm:VectorType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="DirectionFieldType">
-    <xsd:restriction base="plm:VectorType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="AxisFieldType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:length value="6"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="AttributeOwnerType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="assembly"/>
-      <xsd:enumeration value="instance"/>
-      <xsd:enumeration value="body"/>
-      <xsd:enumeration value="region"/>
-      <xsd:enumeration value="shell"/>
-      <xsd:enumeration value="face"/>
-      <xsd:enumeration value="loop"/>
-      <xsd:enumeration value="edge"/>
-      <xsd:enumeration value="fin"/>
-      <xsd:enumeration value="vertex"/>
-      <xsd:enumeration value="group"/>
-      <xsd:enumeration value="surface"/>
-      <xsd:enumeration value="curve"/>
-      <xsd:enumeration value="point"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="AttributeClassType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="class_01"/>
-      <xsd:enumeration value="class_02"/>
-      <xsd:enumeration value="class_03"/>
-      <xsd:enumeration value="class_04"/>
-      <xsd:enumeration value="class_05"/>
-      <xsd:enumeration value="class_06"/>
-      <xsd:enumeration value="class_07"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="AttributeLegalOwnerType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:attribute name="name" type="plm:AttributeOwnerType" use="required"/>
-  </xsd:complexType>
-  <xsd:element name="AttributeLegalOwner" type="plm:AttributeLegalOwnerType"/>
-  <!-- -->
-  <xsd:complexType name="AttributeClassBase" abstract="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:attribute name="name" type="plm:AttributeClassType" use="required"/>
-  </xsd:complexType>
-  <xsd:element name="AttributeClass" type="plm:AttributeClassBase"/>
-  <!-- -->
-  <xsd:complexType name="AttributeBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      The Attribute element is an abstract element. Useful attributes
-      (ones that include fields) must be derived from the Attribute element
-      defined within this schema. The derived attributes will define their 
-      data elements to represent data fields.
-    
-      The derived attributes also need to be set as 'equivalent' to the 
-      Attribute element. This enables the new derived attribute to be
-      inserted into documents wherever the Attribute element is allowed.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:DescriptionBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Attribute" type="plm:AttributeBase"/>
-  <!-- -->
-  <!--*** Base Classes -->
-  <!-- -->
-  <xsd:complexType name="PropertiesBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements which may contain 3D bounds.
-      
-      Elements:
-      
-      BoxBound:      legacy, use Bound in preference
-      SphereBound:   legacy, use Bound in preference 
-      Bound:         3D bound
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=Entity3D</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element name="BoxBound" type="plm:BoxBoundType" minOccurs="0">
-            <xsd:annotation>
-              <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-            </xsd:annotation>
-          </xsd:element>
-          <xsd:element name="SphereBound" type="plm:SphereBoundType" minOccurs="0">
-            <xsd:annotation>
-              <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-            </xsd:annotation>
-          </xsd:element>
-          <xsd:element name="Bound" type="plm:BoundType" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Properties" type="plm:PropertiesBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:complexType name="ManagedBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is an abstract base class for elements which require information such as 
-      access control, status and checkout information
-      
-      Attributes:
-      
-      accessRefs:      reference to one or more elements derived from AccessControlBase
-      statusRef:       reference to element derived from StatusBase
-      checkoutRefs:    reference to one or more elements derived from CheckoutStatusBase
-      effectivityRefs  reference to Effectivity elements
-      
-      subType:         No specified semantics. This can be used where simple customised
-                       sub-types have been defined and a PLMXML schema extension is not
-                       appropriate.
-                       
-      releaseStatusRefs: Reference to one or more ReleaseStatus elements, which give
-                       release dates and effectivities.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertiesBase">
-        <xsd:attribute name="accessRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:AccessControl"/>
-        <xsd:attribute name="statusRef" type="plm:anyURIType" use="optional" plm:refType="plm:Status"/>
-        <xsd:attribute name="checkoutRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:CheckoutStatus"/>
-        <xsd:attribute name="subType" type="xsd:string" use="optional"/>
-        <xsd:attribute name="effectivityRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Effectivity"/>
-        <xsd:attribute name="releaseStatusRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:ReleaseStatus"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Managed" type="plm:ManagedBase" substitutionGroup="plm:Properties"/>
-  <!-- -->
-  <xsd:complexType name="AccessControlBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      AccessControl - abstract base class for Access Control types.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AccessControl" type="plm:AccessControlBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:complexType name="StatusBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Status - abstract base class for status information types.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Status" type="plm:StatusBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:complexType name="CheckoutStatusBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      CheckoutStatus - abstract base class for Checkout types.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CheckoutStatus" type="plm:CheckoutStatusBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:complexType name="InternalRepBase" abstract="true">
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="InternalRep" type="plm:InternalRepBase"/>
-  <!-- -->
-  <xsd:complexType name="EntityBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements which reference an external entity such as a
-      face in an XT file.
-      
-      Attributes:
-      
-      entityRef:     reference to external entity.
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=EntityObject</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="entityRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Entity" type="plm:EntityBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- Geometry -->
-  <!-- -->
-  <xsd:complexType name="GeometryBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements representing geometric objects.
-      
-      Attributes:
-      
-      propertyRefs:   reference to Properties of the element
-
-      Elements:
-      
-      PropertyGroup:  a collection of Properties of the element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Geometry" type="plm:GeometryBase" substitutionGroup="plm:Entity"/>
-  <!-- -->
-  <!-- Point -->
-  <!-- -->
-  <xsd:complexType name="PointBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements representing 3D points.
-      
-      Attributes:
-      
-      position:      coordinates of point
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeometryBase">
-        <xsd:attribute name="position" type="plm:VectorType"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Point" type="plm:PointBase" substitutionGroup="plm:Entity"/>
-  <!-- -->
-  <!-- ReferencePoint -->
-  <!-- -->
-  <xsd:complexType name="ReferencePointType">
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityBase">
-        <xsd:attribute name="position" type="plm:VectorType"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="SamplePointsType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:DoubleListType">
-        <xsd:attribute name="tolerance" type="xsd:double"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <!-- Curve -->
-  <!-- -->
-  <xsd:complexType name="CurveBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements representing parametrised curves in 3-space.
-      
-      Attributes:
-      
-      startT:        start parameter
-      endT:          end parameter
-      
-      Elements:
-      
-      StartPoint:    optional coordinates of start point
-      EndPoint:      optional coordinates of end point
-      SamplePoints:  optional coordinates of a sequence of points along curve
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeometryBase">
-        <xsd:sequence>
-          <xsd:element name="StartPoint" type="plm:ReferencePointType" minOccurs="0"/>
-          <xsd:element name="EndPoint" type="plm:ReferencePointType" minOccurs="0"/>
-          <xsd:element name="SamplePoints" type="plm:SamplePointsType" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="startT" type="xsd:double" use="optional"/>
-        <xsd:attribute name="endT" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Curve" type="plm:CurveBase" substitutionGroup="plm:Entity"/>
-  <!-- -->
-  <xsd:complexType name="PlaneCurveBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for 3D curves which lie in a plane.
-      
-      Attributes:
-      
-      origin:        centre of plane
-      zAxis:         normal to plane
-      xAxis:         x-direction in plane
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CurveBase">
-        <xsd:attribute name="origin" type="plm:VectorType" default="0 0 0"/>
-        <xsd:attribute name="zAxis" type="plm:DirectionType" default="0 0 1"/>
-        <xsd:attribute name="xAxis" type="plm:DirectionType" default="1 0 0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="SurfaceBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements representing a u-v-parametrised surface in 3-space. 
-      
-      Attributes:
-      
-      startU:        lowest U value
-      endU:          highest U value
-      startV:        lowest V value
-      endV:          highest V value
-      
-      Elements:
-      
-      SamplePoints:  optional coordinates of a set of points on the surface
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeometryBase">
-        <xsd:sequence>
-          <xsd:element name="SamplePoints" type="plm:SamplePointsType" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="startU" type="xsd:double" use="optional"/>
-        <xsd:attribute name="endU" type="xsd:double" use="optional"/>
-        <xsd:attribute name="startV" type="xsd:double" use="optional"/>
-        <xsd:attribute name="endV" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Surface" type="plm:SurfaceBase" substitutionGroup="plm:Entity"/>
-  <!-- -->
-  <xsd:complexType name="SurfacePositionBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements representing a surface which uses an
-      X-Y-Z coordinate frame as part of its definition.
-      
-      Attributes:
-      
-      origin:        origin of coordinate frame
-      zAxis:         Z Axis of coordinate frame
-      xAxis:         X Axis of coordinate frame
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfaceBase">
-        <xsd:attribute name="origin" type="plm:VectorType" default="0 0 0"/>
-        <xsd:attribute name="zAxis" type="plm:DirectionType" default="0 0 1"/>
-        <xsd:attribute name="xAxis" type="plm:DirectionType" default="1 0 0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="RGBFloatType">
-    <xsd:restriction base="xsd:float">
-      <xsd:minInclusive value="0.0"/>
-      <xsd:maxInclusive value="1.0"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="RGBFloatListType">
-    <xsd:list itemType="plm:RGBFloatType"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="RGBType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Type representing a Red-Green-Blue colour.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="plm:RGBFloatListType">
-      <xsd:length value="3"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="RGBAType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Type representing a colour in Red-Green-Blue-Alpha format.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="plm:RGBFloatListType">
-      <xsd:length value="4"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="ShininessType">
-    <xsd:restriction base="xsd:float">
-      <xsd:minInclusive value="0.0"/>
-      <xsd:maxInclusive value="255.0"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="AlphaType">
-    <xsd:restriction base="xsd:float">
-      <xsd:minInclusive value="0.0"/>
-      <xsd:maxInclusive value="1.0"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="MaterialType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Element representing a material type.
-      
-      Attributes:
-      
-      ambient:       ambient colour
-      diffuse:       diffuse colour
-      specular:      specular colour
-      emissive:      emissive colour
-      shininess:     shininess coefficient
-      alpha:         alpha coefficient
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="ambient" type="plm:RGBType" use="required"/>
-        <xsd:attribute name="diffuse" type="plm:RGBType" use="required"/>
-        <xsd:attribute name="specular" type="plm:RGBType" default="0.0 0.0 0.0"/>
-        <xsd:attribute name="emissive" type="plm:RGBType" default="0.0 0.0 0.0"/>
-        <xsd:attribute name="shininess" type="plm:ShininessType" default="0.0"/>
-        <xsd:attribute name="alpha" type="plm:AlphaType" default="1.0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Material" type="plm:MaterialType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:complexType name="EntityMaterialType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Element used to associate an entity with a material (colour).
-      
-      Attributes:
-      
-      materialRef:   IDREF to the material element.
-      
-      Elements:
-      
-      EntityRef:     Element derived from EntityRef, used to specify which entity
-                     is to be associated with the material.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice>
-          <xsd:element ref="plm:EntityRef" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:choice>
-        <xsd:attribute name="materialRef" type="xsd:IDREF" use="required" plm:refType="plm:Material"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="EntityMaterial" type="plm:EntityMaterialType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:simpleType name="AttenuationType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:length value="3"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="IntensityExponentType">
-    <xsd:restriction base="xsd:float">
-      <xsd:minInclusive value="0.0"/>
-      <xsd:maxInclusive value="255.0"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="CutoffAngleType">
-    <xsd:restriction base="xsd:float">
-      <xsd:minInclusive value="0.0"/>
-      <xsd:maxInclusive value="90.0"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="LightSourceBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for elements representing Light Sources
-      
-      Attributes:
-      
-      ambient:       ambient light
-      diffuse:       diffuse light
-      specular:      specular light
-      intensity:     intensity multiplier
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="ambient" type="plm:RGBType" default="0.0 0.0 0.0"/>
-        <xsd:attribute name="diffuse" type="plm:RGBType" default="1.0 1.0 1.0"/>
-        <xsd:attribute name="specular" type="plm:RGBType" default="1.0 1.0 1.0"/>
-        <xsd:attribute name="intensity" type="plm:AlphaType" default="1.0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="LightSource" type="plm:LightSourceBase"/>
-  <!-- -->
-  <xsd:complexType name="DirectionalLightType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Directional Light Source (from infinity)
-      
-      Attributes:
-      
-      direction:     direction TO the light source.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LightSourceBase">
-        <xsd:attribute name="direction" type="plm:VectorType" default="0.0 0.0 1.0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DirectionalLight" type="plm:DirectionalLightType" substitutionGroup="plm:LightSource"/>
-  <!-- -->
-  <xsd:complexType name="PositionalLightType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Positional Light Source, i.e. point source.
-      
-      Attributes:
-      
-      position:      position of light
-      direction:     direction in which the light is shining
-      cutoffAngle:   semiAngle of cone of light. If absent, the source is not
-                     a spotlight, but shines in all directions.
-      intensityExponent:  the intensity exponent determines the intensity distribution
-                     within the cone. Higher intensity exponent values result in a more
-                     focused light source. 
-      attenuation:   the attenuation of the light source within the scene. The three
-                     attenuation values are the factors in a quadratic equation, giving
-                     intensity as a function of distance from the source. The values
-                     within the attribute are in order: quadratic, linear and constant.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LightSourceBase">
-        <xsd:attribute name="position" type="plm:VectorType" default="0.0 0.0 1.0"/>
-        <xsd:attribute name="direction" type="plm:VectorType" default="0.0 0.0 -1.0"/>
-        <xsd:attribute name="cutoffAngle" type="plm:CutoffAngleType" use="optional"/>
-        <xsd:attribute name="intensityExponent" type="plm:IntensityExponentType" default="0.0"/>
-        <xsd:attribute name="attenuation" type="plm:AttenuationType" default="0.0 0.0 1.0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PositionalLight" type="plm:PositionalLightType" substitutionGroup="plm:LightSource"/>
-  <!-- -->
-  <xsd:simpleType name="ShadingStyleType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="flat"/>
-      <xsd:enumeration value="smooth"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="DrawingStyleType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="wireframe"/>
-      <xsd:enumeration value="hidden"/>
-      <xsd:enumeration value="hiddenMarked"/>
-      <xsd:enumeration value="shaded"/>
-      <xsd:enumeration value="shadedWithEdges"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="DisplayControlType">
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="drawingStyle" type="plm:DrawingStyleType" default="shaded"/>
-        <xsd:attribute name="shadingStyle" type="plm:ShadingStyleType" default="flat"/>
-        <xsd:attribute name="backgroundColour" type="plm:RGBType" default="0.0 0.0 0.0"/>
-        <xsd:attribute name="lightSourceRefs" type="xsd:IDREFS" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="SectionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Section definition of a View, i.e. cutter geometry.
-      
-      Attributes:
-      
-      geometryRef:   a reference to an object defining section geometry, which is 
-                     expected to be a surface or a solid, for example - construction geometry 
-                     element derived from SurfaceBase or (an Occurrence of) geometry stored 
-                     in a Representation stream.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="geometryRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Section" type="plm:SectionType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:simpleType name="RefSelectType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This type describes whether the PLMXML reference is
-      specifying a single entity or a set of entities.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="single"/>
-      <xsd:enumeration value="multiple"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="EntityRefBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for defining a reference to an entity. All entity
-      reference elements should be based on this type and defined
-      as a substitution class for EntityRef.
-  
-      Attributes:
-      
-      select:     Type of the reference - single or multiple.  
-      contextRef: Context for the reference
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:DescriptionBase">
-        <xsd:attribute name="contextRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="select" type="plm:RefSelectType" default="single"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="EntityRef" type="plm:EntityRefBase"/>
-  <!-- -->
-  <xsd:simpleType name="LocatorRefFormatType">
-    <xsd:annotation>
-      <xsd:documentation>
-    Locator reference format.
-    </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="PLMXMLPointer"/>
-      <xsd:enumeration value="Unregistered"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="LocatorRefType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Locator reference element. The reference is a URI based reference and
-      the syntax of the URI must be pre-defined. Hence the only predefined
-      type is currently PLMXMLPointer.
-      
-      Attributes:
-      
-      locationRef:  The value of the URI reference.
-      type:         Format of the locator reference.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityRefBase">
-        <xsd:attribute name="locationRef" type="plm:anyURIType" use="required"/>
-        <xsd:attribute name="type" type="plm:LocatorRefFormatType" default="PLMXMLPointer"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="LocatorRef" type="plm:LocatorRefType" substitutionGroup="plm:EntityRef"/>
-  <!-- -->
-  <xsd:complexType name="AttributeRefType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Attribute reference element. The reference is based on a user
-      defined named attribute on the host representation. This type
-      enables the author to note the attribute name, field name/index
-      and the value of the attribute.
-
-      Attributes:
-      
-      attribute:  The name of the attribute to query, e.g.
-                  "COMPANYNAME/Tracking_attribute".
-      field:      The name of the field within the attribute.
-      index:      The index of the field within the attribute, if its
-                  name is not given. (The first field is index 0).
-      value:      The value of the attribute to match.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityRefBase">
-        <xsd:attribute name="attribute" type="xsd:string" use="required"/>
-        <xsd:attribute name="field" type="xsd:string" use="optional"/>
-        <xsd:attribute name="index" type="xsd:integer" use="optional"/>
-        <xsd:attribute name="value" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AttributeRef" type="plm:AttributeRefType" substitutionGroup="plm:EntityRef"/>
-  <!-- -->
-  <xsd:complexType name="GUIDRefType">
-    <xsd:annotation>
-      <xsd:documentation>
-      GUID reference element. This simply specifies the GUID of the entity
-      being referenced.
-      
-      Attribute:
-    
-      guid:       The GUID of the entity referenced, in the form of a string containing 
-                  32 hex digits, with arbitrary non-hex spacing characters.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityRefBase">
-        <xsd:attribute name="guid" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GUIDRef" type="plm:GUIDRefType" substitutionGroup="plm:EntityRef"/>
-  <!-- -->
-  <!-- RefPoint -->
-  <!-- -->
-  <xsd:complexType name="RefPointType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Reference Point element
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PointBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="RefPoint" type="plm:RefPointType" substitutionGroup="plm:Point"/>
-  <!-- -->
-  <!-- Line -->
-  <!-- -->
-  <xsd:complexType name="LineType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Straight line curve.
-      
-      Attributes:
-      
-      origin:        start (T=0).
-      direction:     direction of increasing T.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CurveBase">
-        <xsd:attribute name="origin" type="plm:VectorType" use="required"/>
-        <xsd:attribute name="direction" type="plm:DirectionType" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Line" type="plm:LineType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- PolyLine -->
-  <!-- -->
-  <xsd:simpleType name="PolyLineDimensionType">
-    <xsd:restriction base="xsd:positiveInteger">
-      <xsd:minInclusive value="2"/>
-      <xsd:maxInclusive value="3"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="PolyLineType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Polyline, i.e. sequence of connected line-segments.
-      
-      Attributes:
-      
-      closed:        true if the end of the polyline equals its start.
-      dimension:     dimension of the curve. This determines the length of each 
-                     vector in 'Points'. Defaults to 3.
-                     
-      type:          an optional indication of the shape of the polyline, e.g. "arc".
-                     
-      Elements:
-      
-      Points:        coordinates of the ends of the line segments, in order.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CurveBase">
-        <xsd:sequence>
-          <xsd:element name="Points" type="plm:DoubleListType"/>
-        </xsd:sequence>
-        <xsd:attribute name="closed" type="xsd:boolean" default="false"/>
-        <xsd:attribute name="dimension" type="plm:PolyLineDimensionType" default="3"/>
-        <xsd:attribute name="type" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PolyLine" type="plm:PolyLineType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- Circle -->
-  <!-- -->
-  <xsd:complexType name="CircleType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Circular curve. The T=0 point is on the positive x-axis of the underlying plane. The
-      T=pi/2 point is on the positive y-axis.
-      
-      Attributes:
-      
-      radius:        radius
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PlaneCurveBase">
-        <xsd:attribute name="radius" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Circle" type="plm:CircleType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- Ellipse -->
-  <!-- -->
-  <xsd:complexType name="EllipseType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Elliptical curve. The T=0 point is on the positive x-axis of the underlying plane,
-      at a distance 'majorRadius' from the origin. The T=pi/2 point is on the positive
-      y-axis, at a distance 'minorRadius' from the origin.
-      
-      Attributes:
-      
-      majorRadius:   major radius.
-      minorRadius:   minor radius.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PlaneCurveBase">
-        <xsd:attribute name="majorRadius" type="xsd:double" use="required"/>
-        <xsd:attribute name="minorRadius" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Ellipse" type="plm:EllipseType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- BSplineCurve -->
-  <!-- -->
-  <xsd:simpleType name="SplineDimensionType">
-    <xsd:restriction base="xsd:positiveInteger">
-      <xsd:minInclusive value="2"/>
-      <xsd:maxInclusive value="3"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="SplineCurveFormType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="planar"/>
-      <xsd:enumeration value="general"/>
-      <xsd:enumeration value="unknown"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <!-- BSplineCurve -->
-  <!-- -->
-  <xsd:complexType name="BSplineCurveType">
-    <xsd:annotation>
-      <xsd:documentation>
-      B-Spline curve in 2- or 3-dimensional space.
-      
-      Attributes:
-      
-      degree:        degree of the curve.
-      dimension:     dimension of the curve. This determines the length of each vector in 
-                     'Vertices': if isRational is true, it is 'dimension+1', else it is
-                     'dimension'. Defaults to 3.
-      isRational:    true if the spline is rational.
-      isPeriodic:    true if the spline is periodic.
-      isClosed:      true if the start and end of the curve coincide.
-      form:          form of the curve.
-
-      Elements:
-      
-      Knots:         knot values, in increasing order, no repetitions.
-      KnotMultiplicities: multiplicities of the knots.
-      Vertices:      coordinates of the vertices.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CurveBase">
-        <xsd:sequence>
-          <xsd:element name="Knots" type="plm:DoubleListType"/>
-          <xsd:element name="KnotMultiplicities" type="plm:IntegerListType"/>
-          <xsd:element name="Vertices" type="plm:DoubleListType"/>
-        </xsd:sequence>
-        <xsd:attribute name="degree" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="dimension" type="plm:SplineDimensionType" default="3"/>
-        <xsd:attribute name="isRational" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="isPeriodic" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="isClosed" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="form" type="plm:SplineCurveFormType" default="unknown"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="BSplineCurve" type="plm:BSplineCurveType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- CompositeCurve -->
-  <!-- -->
-  <xsd:complexType name="CompositeCurveType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Composite Curve, formed by joining curves together end-to-end.
-             
-      Attributes:
-      
-      curves:        sequence of curves. NB this attribute name is non-standard,
-                     PLMXML conventions require that IDREFS attributes end in 'Refs'.
-      isClosed:      true if the end of the last curve coincides with the start
-                     of the first.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CurveBase">
-        <xsd:attribute name="curves" type="xsd:IDREFS" use="required" plm:refType="plm:Curve">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="isClosed" type="xsd:boolean" default="false"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CompositeCurve" type="plm:CompositeCurveType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- SPCurve -->
-  <!-- -->
-  <xsd:complexType name="SPCurveType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A curve defined in the parameter-space of a surface. The x,y positions
-      of the curve correspond to u,v parameters in the surface.
-             
-      Attributes:
-      
-      parameterCurve:  reference to a 2-dimensional BSpline curve.
-      surface:         reference to a surface.
-      
-                       NB both these attributes have non-standard names, PLMXML
-                       conventions require reference attributes to end in 'Ref'.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CurveBase">
-        <xsd:attribute name="parameterCurve" type="xsd:IDREF" use="required" plm:refType="plm:Curve">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="surface" type="xsd:IDREF" use="required" plm:refType="plm:Surface">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SPCurve" type="plm:SPCurveType" substitutionGroup="plm:Curve"/>
-  <!-- -->
-  <!-- Plane -->
-  <!-- -->
-  <xsd:complexType name="PlaneType">
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfacePositionBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Plane" type="plm:PlaneType" substitutionGroup="plm:Surface"/>
-  <!-- -->
-  <!-- Cylinder -->
-  <!-- -->
-  <xsd:complexType name="CylinderType">
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfacePositionBase">
-        <xsd:attribute name="radius" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Cylinder" type="plm:CylinderType" substitutionGroup="plm:Surface"/>
-  <!-- -->
-  <!-- Sphere -->
-  <!-- -->
-  <xsd:complexType name="SphereType">
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfacePositionBase">
-        <xsd:attribute name="radius" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Sphere" type="plm:SphereType" substitutionGroup="plm:Surface"/>
-  <!-- -->
-  <!-- Cone -->
-  <!-- -->
-  <xsd:complexType name="ConeType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Conical surface. The cone axis is along the Z-Axis of the underlying 
-      coordinate frame. The cone radius increases in the direction of the
-      Z-Axis.
-      
-      Attributes:
-      
-      radius:          radius of the cone at the origin of the coordinate frame.
-                       This is zero or positive.
-      halfAngle:       the positive angle between the Z-Axis and a line in the
-                       cone, in radians.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfacePositionBase">
-        <xsd:attribute name="radius" type="xsd:double" use="required"/>
-        <xsd:attribute name="halfAngle" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Cone" type="plm:ConeType" substitutionGroup="plm:Surface"/>
-  <!-- -->
-  <!-- Torus -->
-  <!-- -->
-  <xsd:complexType name="TorusType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Toroidal surface. The axis of the torus is the Z-Axis of the underlying
-      coordinate frame.
-      
-      Attributes:
-      
-      majorRadius:     major radius 
-      minorRadius:     minor radius
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfacePositionBase">
-        <xsd:attribute name="majorRadius" type="xsd:double" use="required"/>
-        <xsd:attribute name="minorRadius" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Torus" type="plm:TorusType" substitutionGroup="plm:Surface"/>
-  <!-- -->
-  <!-- BSplineSurface -->
-  <!-- -->
-  <xsd:complexType name="BSplineSurfaceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      B-Spline surface, normally in 3-dimensional space.
-      
-      Attributes:
-      
-      uDegree:       degree of the surface in U.
-      vDegree:       degree of the surface in V.
-      dimension:     dimension of the surface. This determines the length of each vector
-                     in 'Vertices': if isRational is true, it is 'dimension+1', else it
-                     is 'dimension'. Defaults to 3.
-      isRational:    true if the surface is rational.
-      isUPeriodic:   true if the surface is periodic in U.
-      isUPeriodic:   true if the surface is periodic in U.
-      isVClosed:     true if the surface is closed in V.
-      isVClosed:     true if the surface is closed in V.
-      numberOfUVertices: number of U vertices.
-      numberOfVVertices: number of V vertices.
-
-      Elements:
-      
-      UKnots:        U knot values, in increasing order, no repetitions.
-      VKnots:        V knot values, in increasing order, no repetitions.
-      UKnotMultiplicities: multiplicities of the U knots.
-      VKnotMultiplicities: multiplicities of the V knots.
-      Vertices:      coordinates of the vertices.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:SurfaceBase">
-        <xsd:sequence>
-          <xsd:element name="UKnots" type="plm:DoubleListType"/>
-          <xsd:element name="VKnots" type="plm:DoubleListType"/>
-          <xsd:element name="UKnotMultiplicities" type="plm:IntegerListType"/>
-          <xsd:element name="VKnotMultiplicities" type="plm:IntegerListType"/>
-          <xsd:element name="Vertices" type="plm:DoubleListType"/>
-        </xsd:sequence>
-        <xsd:attribute name="dimension" type="plm:SplineDimensionType" default="3"/>
-        <xsd:attribute name="numberOfUVertices" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="numberOfVVertices" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="uDegree" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="vDegree" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="isRational" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="isUPeriodic" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="isVPeriodic" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="isUClosed" type="xsd:boolean" use="required"/>
-        <xsd:attribute name="isVClosed" type="xsd:boolean" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="BSplineSurface" type="plm:BSplineSurfaceType" substitutionGroup="plm:Surface"/>
-  <!-- -->
-  <!-- CoordinateSystem -->
-  <!-- -->
-  <xsd:complexType name="CoordinateSystemType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Cartesian Coordinate system.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeometryBase">
-        <xsd:attribute name="origin" type="plm:VectorType" default="0 0 0"/>
-        <xsd:attribute name="zAxis" type="plm:DirectionType" default="0 0 1"/>
-        <xsd:attribute name="xAxis" type="plm:DirectionType" default="1 0 0"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CoordinateSystem" type="plm:CoordinateSystemType" substitutionGroup="plm:Geometry"/>
-  <!-- -->
-  <!-- Composition -->
-  <!-- -->
-  <xsd:complexType name="GeometryCompositionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Geometry composition.
-      
-      Elements:
-      
-      Point:         any elements derived from Point.
-      Curve:         any elements derived from Curve.
-      Surface:       any elements derived from Surface.
-      CoordinateSystem:  coordinate systems.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityBase">
-        <xsd:sequence>
-          <xsd:element name="LocalCoordinateSystem" type="plm:CoordinateSystemType"/>
-          <xsd:choice maxOccurs="unbounded">
-            <xsd:element ref="plm:Point"/>
-            <xsd:element ref="plm:Curve"/>
-            <xsd:element ref="plm:Surface"/>
-            <xsd:element ref="plm:CoordinateSystem"/>
-          </xsd:choice>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GeometryComposition" type="plm:GeometryCompositionType"/>
-  <!-- -->
-  <!-- ConstructionGeometry -->
-  <!-- -->
-  <xsd:complexType name="ConstructionGeometryType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Top level construction geometry element.
-      
-      Elements:
-      
-      Point:         any elements derived from Point.
-      Curve:         any elements derived from Curve.
-      Surface:       any elements derived from Surface.
-      CoordinateSystem:     coordinate systems.
-      GeometryComposition:  geometry compositions.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EntityBase">
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element ref="plm:Point"/>
-          <xsd:element ref="plm:Curve"/>
-          <xsd:element ref="plm:Surface"/>
-          <xsd:element ref="plm:CoordinateSystem"/>
-          <xsd:element ref="plm:GeometryComposition"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConstructionGeometry" type="plm:ConstructionGeometryType" substitutionGroup="plm:Entity"/>
-  <!-- -->
-  <!-- Perspective -->
-  <!-- -->
-  <xsd:complexType name="PerspectiveType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Defines a perspective view from a point.
-      
-      Elements:
-      
-      ViewFrom:        eye point
-      ViewTo:          point towards which eye is looking
-      ViewVertical:    vector which is vertical in the view. Should be
-                       perpendicular to (ViewFrom - ViewTo).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="ViewFrom" type="plm:VectorType"/>
-      <xsd:element name="ViewTo" type="plm:VectorType"/>
-      <xsd:element name="ViewVertical" type="plm:VectorType"/>
-    </xsd:sequence>
-  </xsd:complexType>
-  <!-- -->
-  <!-- Orthographic -->
-  <!-- -->
-  <xsd:complexType name="OrthographicType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Defines a view from infinity (no perspective).
-      
-      Elements:
-      
-      ViewDirection:   direction eye is looking in.
-      ViewVertical:    vector which is vertical in the view. Should be
-                       perpendicular to ViewDirection.
-      ViewTo:          optional point at which eye is looking, only needed
-                       if depth is significant in the view.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="ViewDirection" type="plm:VectorType"/>
-      <xsd:element name="ViewVertical" type="plm:VectorType"/>
-      <xsd:choice minOccurs="0">
-        <xsd:element name="ViewTo" type="plm:VectorType"/>
-      </xsd:choice>
-    </xsd:sequence>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="ViewPortCornerType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:length value="2"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="ViewPortType">
-    <xsd:sequence>
-      <xsd:element name="ViewPortLow" type="plm:ViewPortCornerType"/>
-      <xsd:element name="ViewPortHigh" type="plm:ViewPortCornerType"/>
-    </xsd:sequence>
-  </xsd:complexType>
-  <!-- -->
-  <!-- ViewControl -->
-  <!-- -->
-  <xsd:complexType name="ViewControlType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Defines a view, i.e. a camera position and optional viewport.
-      
-      Elements:
-      
-      One of Perspective, Orthographic or ViewMatrix (4 by 4).
-      
-      ViewPort:        optional viewport definition.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:DescriptionBase">
-        <xsd:sequence>
-          <xsd:choice>
-            <xsd:element name="Perspective" type="plm:PerspectiveType"/>
-            <xsd:element name="Orthographic" type="plm:OrthographicType"/>
-            <xsd:element name="ViewMatrix" type="plm:MatrixType"/>
-          </xsd:choice>
-          <xsd:element name="ViewPort" type="plm:ViewPortType" minOccurs="0"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ViewControl" type="plm:ViewControlType"/>
-  <!--*** Texture -->
-  <!--*** PLMXML Schema to define textures to support entity display properties. -->
-  <!-- -->
-  <xsd:simpleType name="TextureDataFormatType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Basic texture data format definition
-      
-      Determines the length of each data element in the hexBinary data element.
-    
-      RGBA = 4 bytes of red, green, blue and alpha
-      RGB  = 3 bytes of red, green and blue
-      LA   = 2 bytes of luminance and alpha
-      A    = 1 byte of alpha
-      L    = 1 byte of luminance
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="RGBA"/>
-      <xsd:enumeration value="RGB"/>
-      <xsd:enumeration value="LA"/>
-      <xsd:enumeration value="A"/>
-      <xsd:enumeration value="L"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="Texture1DDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Basic 1D texture data definition 
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:hexBinary">
-        <xsd:attribute name="level" type="xsd:nonNegativeInteger" use="required"/>
-        <xsd:attribute name="width" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="border" type="xsd:nonNegativeInteger" default="0"/>
-        <xsd:attribute name="location" type="plm:anyURIType" use="optional">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="Texture1DType">
-    <xsd:choice maxOccurs="unbounded">
-      <xsd:element name="Data" type="plm:Texture1DDataType"/>
-    </xsd:choice>
-    <xsd:attribute name="format" type="plm:TextureDataFormatType" use="required"/>
-    <xsd:attribute name="levels" type="xsd:positiveInteger" default="1"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="Texture2DDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Basic 2D texture data definition
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:hexBinary">
-        <xsd:attribute name="level" type="xsd:nonNegativeInteger" use="required"/>
-        <xsd:attribute name="width" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="height" type="xsd:positiveInteger" use="required"/>
-        <xsd:attribute name="border" type="xsd:nonNegativeInteger" default="0"/>
-        <xsd:attribute name="location" type="plm:anyURIType" use="optional">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="Texture2DType">
-    <xsd:choice maxOccurs="unbounded">
-      <xsd:element name="Data" type="plm:Texture2DDataType"/>
-    </xsd:choice>
-    <xsd:attribute name="format" type="plm:TextureDataFormatType" use="required"/>
-    <xsd:attribute name="levels" type="xsd:positiveInteger" default="1"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="TextureDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Basic texture data definition 
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice>
-          <xsd:element name="Texture2D" type="plm:Texture2DType"/>
-          <xsd:element name="Texture1D" type="plm:Texture1DType"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="TextureData" type="plm:TextureDataType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:simpleType name="TextureMapType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Texture control definition
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="decal"/>
-      <xsd:enumeration value="modulate"/>
-      <xsd:enumeration value="blend"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="TextureSampleType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="nearest"/>
-      <xsd:enumeration value="linear"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="TextureWrapType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="clamp"/>
-      <xsd:enumeration value="wrap"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="TextureType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Basic texture definition
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice minOccurs="0">
-          <xsd:element name="TextureData" type="plm:TextureDataType"/>
-        </xsd:choice>
-        <xsd:attribute name="dataRef" type="xsd:IDREF" use="optional" plm:refType="plm:TextureData"/>
-        <xsd:attribute name="mapping" type="plm:TextureMapType" use="required"/>
-        <xsd:attribute name="subsamplingLow" type="plm:TextureSampleType" default="nearest"/>
-        <xsd:attribute name="subsamplingHigh" type="plm:TextureSampleType" default="nearest"/>
-        <xsd:attribute name="oversampling" type="plm:TextureSampleType" default="nearest"/>
-        <xsd:attribute name="wrapping" type="plm:TextureWrapType" default="clamp"/>
-        <xsd:attribute name="borderColour" type="plm:RGBAType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Texture" type="plm:TextureType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <xsd:simpleType name="TextureCoordDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Texture coordinates 
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:minLength value="1"/>
-      <xsd:maxLength value="4"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="GeometryParamType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:length value="2"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="TextureCoordType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:TextureCoordDataType">
-        <xsd:attributeGroup ref="plm:idGroup"/>
-        <xsd:attribute name="textureRef" type="xsd:IDREF" use="optional" plm:refType="plm:Texture"/>
-        <xsd:attribute name="geometryCoord" type="plm:VectorType" use="optional"/>
-        <xsd:attribute name="geometryParam" type="plm:GeometryParamType" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="EntityTextureType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Texture structures that can be associated with a remote entity.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element name="TextureCoord" type="plm:TextureCoordType" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:EntityRef" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="textureRef" type="xsd:IDREF" use="required" plm:refType="plm:Texture"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="EntityTexture" type="plm:EntityTextureType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- Representation -->
-  <!-- -->
-  <xsd:simpleType name="RepresentationFormatType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="XT"/>
-      <xsd:enumeration value="eXT"/>
-      <xsd:enumeration value="PLMXML"/>
-      <xsd:enumeration value="jXT"/>
-      <xsd:enumeration value="JT"/>
-      <xsd:enumeration value="XPK"/>
-      <xsd:enumeration value="XGL"/>
-      <xsd:enumeration value="VRML"/>
-      <xsd:enumeration value="STL"/>
-      <xsd:enumeration value="SAT"/>
-      <xsd:enumeration value="STEP"/>
-      <xsd:enumeration value="IGES"/>
-      <xsd:enumeration value="UGBkm"/>
-      <xsd:enumeration value="UGPrt"/>
-      <xsd:enumeration value="SEPrt"/>
-      <xsd:enumeration value="SEAsm"/>
-      <xsd:enumeration value="IdeasPrt"/>
-      <xsd:enumeration value="IdeasAsm"/>
-      <xsd:enumeration value="IdeasIDI"/>
-      <xsd:enumeration value="Cat4Prt"/>
-      <xsd:enumeration value="Cat5Prt"/>
-      <xsd:enumeration value="Cat5Asm"/>
-      <xsd:enumeration value="SWPrt"/>
-      <xsd:enumeration value="SWAsm"/>
-      <xsd:enumeration value="IDI"/>
-      <xsd:enumeration value="TX"/>
-      <xsd:enumeration value="DWG"/>
-      <xsd:enumeration value="DWF"/>
-      <xsd:enumeration value="DXF"/>
-      <xsd:enumeration value="ProE"/>
-      <xsd:enumeration value="CGM"/>
-      <xsd:enumeration value="CGR"/>
-      <xsd:enumeration value="Unregistered"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="CompoundRepTypeEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="default"/>
-      <xsd:enumeration value="construction"/>
-      <xsd:enumeration value="weld"/>
-      <xsd:enumeration value="midsurface"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="CompoundRepType">
-    <xsd:annotation>
-      <xsd:documentation>
-      The CompoundRep represents a component of a Representation. The Representation 
-      then consists of the aggregate or union of the CompoundReps, which may have
-      different formats.
-      
-      Attributes:
-      
-      location:       URI of data source
-      load:           True if data is to be loaded at the same time as the PLMXML file.
-      format:         Data format. If this is absent, the format is taken from the parent
-                      Representation.
-                      
-      equivalentRef:  an optional reference to a CompoundRep which is equivalent to
-                      this one (for example, has the same shape). If this attribute is
-                      used, then it should collect together equivalent CompoundReps
-                      into a ring, with each CompoundRep using this attribute to point
-                      to the next in the ring.
-
-      type:           an optional attribute specifying type or purpose of the CompoundRep.
-                      Supported values are:
-                      "default" - design geometry.
-                      "construction" - construction geometry associated with the 
-                                       owning representation.
-                      "weld" - the geometry of any weld beads.
-                      "midsurface" - a special type of construction geometry used with sheet
-                                     metal parts.
-
-      baseRef:        an optional reference to a CompoundRep which is overridden by this 
-                      CompoundRep.
-                      
-      transformRef:   has the same purpose as the Transform sub-element. Do not use both.
-                        
-      Elements:
-      
-      PropertyGroup   a collection of Properties of the CompoundRep
-      EntityRef:      references to entities in the Representation file. These EntityRef
-                      elements can be referenced by RepresentationEntity elements.
-      Transform:      optional Transform which positions the geometry in the
-                      coordinate frame of the owning Representation.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertiesBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-          <xsd:element ref="plm:EntityRef" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:Transform" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attributeGroup ref="plm:referenceGroup"/>
-        <xsd:attribute name="format" type="plm:RepresentationFormatType" use="optional"/>
-        <xsd:attribute name="equivalentRef" type="xsd:IDREF" use="optional" plm:refType="plm:CompoundRep"/>
-        <xsd:attribute name="type" type="plm:CompoundRepTypeEnum" default="default"/>
-        <xsd:attribute name="baseRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="transformRef" type="plm:anyURIType" use="optional" plm:refType="plm:Transform"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CompoundRep" type="plm:CompoundRepType" substitutionGroup="plm:Properties"/>
-  <!-- -->
-  <xsd:simpleType name="RepresentationTypeEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="default"/>
-      <xsd:enumeration value="simplified"/>
-      <xsd:enumeration value="flat"/>
-      <xsd:enumeration value="user"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="RepresentationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      The Representation element in an PLMXML file refers to a model in some
-      particular format, such as XT or jXT. It can refer to the model data in
-      another file (an External Representation), or the data can be embedded within
-      the Representation element in the XML file (an InternalRepresentation). It
-      can also consist of a number of CompoundRep sub-elements.
-
-      Attributes:
-
-      format:         data format
-      revision:       revision of data
-      transformRef:   has the same purpose as the Transform sub-element. Do not use both.
-      location:       URI of data source
-      load:           true if data is to be loaded at the same time as the PLMXML file.
-      
-      equivalentRef:  an optional reference to a Representation which is equivalent to
-                      this one (for example, has the same shape). If this attribute is
-                      used, then it should collect together equivalent Representations
-                      into a ring, with each Representation using this attribute to point
-                      to the next in the ring.
-   
-      type:           an optional attribute specifying type or purpose of the Representation.
-                      Supported values are:
-                      "default" - primary or design geometry.
-                      "simplified" - geometry of the simplified model.
-                      "flat" - geometry of the unfolded model.
-                      "user" - the inherited "name" attribute may be set to the name of an NX
-                               ReferenceSet, which implies the purpose of the geometry.
-
-                      Representation type can be used to distinguish between additional 
-                      and alternative geometry at assembly level in the following way:
-
-                      "default"/"user" - If CompoundReps are all of type "construction", "weld" 
-                               or "midsurface", then geometry should be treated additional.
-                               Otherwise - alternative.
-                      "simplified" - alternative.
-                      "flat" - Not expected at assembly level.
-
-      baseRef:        an optional reference to a Representation which is overridden by this 
-                      Representation.
-   
-      Elements:
-      
-      Transform:      optional Transform which positions the geometry in the
-                      coordinate frame of the owner.
-      CompoundRep:    the Representation may not have a single location. Instead, it may
-                      contain a number of CompoundRep sub-elements, each with its own 
-                      location. The representation is the aggregate of these data sources.
-      InternalRep:    the Representation may contain one element derived from InternalRep,
-                      in which case it should not also have a location attribute.
-                      
-      EntityRef:      references to entities in the Representation file. These EntityRef
-                      elements can be referenced by RepresentationEntity elements.
-
-      May also contain elements of type Material, EntityMaterial, TextureData, Texture, or
-      EntityTexture.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertiesBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Transform" minOccurs="0"/>
-          <xsd:element ref="plm:InternalRep" minOccurs="0"/>
-          <xsd:element ref="plm:CompoundRep" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:element ref="plm:Material"/>
-            <xsd:element ref="plm:EntityMaterial"/>
-            <xsd:element ref="plm:TextureData"/>
-            <xsd:element ref="plm:Texture"/>
-            <xsd:element ref="plm:EntityTexture"/>
-            <xsd:element ref="plm:EntityRef"/>
-          </xsd:choice>
-        </xsd:sequence>
-        <xsd:attribute name="transformRef" type="xsd:IDREF" use="optional" plm:refType="plm:Transform"/>
-        <xsd:attribute name="format" type="plm:RepresentationFormatType" use="optional"/>
-        <xsd:attribute name="revision" type="xsd:decimal" use="optional"/>
-        <xsd:attributeGroup ref="plm:referenceGroup"/>
-        <xsd:attribute name="equivalentRef" type="xsd:IDREF" use="optional" plm:refType="plm:Representation"/>
-        <xsd:attribute name="type" type="plm:RepresentationTypeEnum" default="default"/>
-        <xsd:attribute name="baseRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Representation" type="plm:RepresentationType" substitutionGroup="plm:Properties"/>
-  <!-- -->
-  <!-- ******************************** OccurrenceFilter ***************************** -->
-  <!-- -->
-  <xsd:complexType name="OccurrenceFilterBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Abstract base class for filters.
-      
-      Attributes:
-      
-      contextRef:     The owning StructureRevisionView, if appropriate
-      outputRef:      The result of applying the Filter - a ConfiguredOccurrenceGroup
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="contextRef" type="plm:anyURIType" use="optional" plm:refType="plm:StructureRevisionView"/>
-        <xsd:attribute name="outputRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="OccurrenceFilter" type="plm:OccurrenceFilterBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************** ConfiguredOccurrenceGroup ************************* -->
-  <!-- -->
-  <xsd:complexType name="ConfiguredOccurrenceGroupType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is the configured form of the OccurrenceGroup element. 
-      
-      It is a group of Occurrences and other ConfiguredOccurrenceGroups. All the
-      Occurrences included (recursively) in a ConfiguredOccurrenceGroup must have the
-      same Structure and View as the parent of their top Instance.
-    
-      ConfiguredOccurrenceGroups can share Occurrences or other 
-      ConfiguredOccurrenceGroups, but must not contain recursive loops.
-    
-      Attributes:
-                      
-      childRefs:      reference to contained Occurrences or ConfiguredOccurrenceGroups
-      sourceRef:      A reference to the OccurrenceGroup to which this corresponds. 
-      associatedAttachmentRefs: references to root AssociatedAttachments.
-      
-      Sub-elements:
-      
-      AssociatedAttachment
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:AssociatedAttachment" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="childRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="sourceRef" type="plm:anyURIType" use="optional" plm:refType="plm:OccurrenceGroup"/>
-        <xsd:attribute name="associatedAttachmentRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:AssociatedAttachment"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConfiguredOccurrenceGroup" type="plm:ConfiguredOccurrenceGroupType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ConfigRule -->
-  <!-- -->
-  <xsd:complexType name="ConfigRuleBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Abstract base class for Configuration Rule elements
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConfigRule" type="plm:ConfigRuleBase" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ConfigurationView -->
-  <!-- -->
-  <xsd:complexType name="ConfigurationViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This represents a configured structure. 
- 
-      Attributes:
-    
-      ruleRefs:       references to configuration rules (derived from ConfigRuleBase) 
-      attachmentRefs: references to root attachments.
-      
-      Elements:
-
-      AssociatedAttachment: These elements specify the elements attached to the
-                      ConfigurationView. 
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:AssociatedAttachment"/>
-        </xsd:choice>
-        <xsd:attribute name="ruleRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:ConfigRule"/>
-        <xsd:attribute name="attachmentRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:AssociatedAttachment"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConfigurationView" type="plm:ConfigurationViewType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ProductView -->
-  <!-- -->
-  <xsd:simpleType name="ProductViewDefinitionType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="select"/>
-      <xsd:enumeration value="overlay"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="ProductViewUsageType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="visual"/>
-      <xsd:enumeration value="arrangement"/>
-      <xsd:enumeration value="variant"/>
-      <xsd:enumeration value="modelView"/>
-      <xsd:enumeration value="pose"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="ProductViewStateEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="active"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="ProductViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      ProductView. This is a collection of Occurrences and ConfiguredOccurrenceGroups
-      with the same top Structure and View.
-   
-      Attributes:
-     
-      viewControlRef:    optional reference to a ViewControl
-      displayControlRef: optional reference to a DisplayControl
-
-      alternativeOfRef:  A ProductView may be defined by reference to another
-                      ProductView, in which case it may include Occurrences which
-                      override certain corresponding Occurrences in the other
-                      ProductView. This attribute is used to specify other ProductView,
-                      which must have the same 'top Structure' as this one.
-                      
-      definition:     how the ProductView is defined. 
-                      
-                      "select" means the ProductView is a selection of Occurrences from
-                      the InstanceGraph. 
-                      
-                      "overlay" mean the ProductView modifies the view implied by the 
-                      InstanceGraph by changing some of the Occurrences. (Occurrences can
-                      also be masked by including an "invisible" Occurrence in the 
-                      ProductView)
-                      
-      usage:          This optional attribute specifies the intent of the ProductView. 
-                      Possible values are:
-      
-                      "visual". This means that the Occurrences in the ProductView are
-                      simply for display, as in an exploded view. They do not necessarily
-                      represent a physically realisable state.
-                      
-                      "arrangement". The Occurrences represent a realisable state or
-                      position of (part of) the assembly.
-                      
-                      "variant". The Occurrences represent a configuration of the Product 
-                      Structure, i.e. with certain Options chosen.
-                      
-                      "modelView". The ProductView represents a Model View, i.e. 
-                      annotated view of (partial) geometry of the model.
-                      
-      rootRefs:       specifies the root Occurrences, i.e. those which are not children
-                      of other Occurrences in this ProductView.
-      
-      primaryOccurrenceRef: (deprecated). Used when there is only one root Occurrence.
-     
-      sectionRef:     specifies the Section (i.e. cutter geometry) associated with this view.
-      
-      default:        "true" if this is a default ProductView.
-      
-      state:          state of the ProductView.
-      
-      Elements:
-      
-      Occurrence:           the Occurrences in the ProductView.
-      ConfiguredOccurrenceGroup: ConfiguredOccurrenceGroups in the ProductView
-      Transform:            Transforms which may be referenced by the Occurrences.
-      SymbolicOccurrence:   SymbolicOccurrences in the ProductView
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ConfigurationViewType">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:Occurrence"/>
-          <xsd:element ref="plm:ConfiguredOccurrenceGroup"/>
-          <xsd:element ref="plm:Transform"/>
-          <xsd:element ref="plm:SymbolicOccurrence"/>
-        </xsd:choice>
-        <xsd:attribute name="primaryOccurrenceRef" type="xsd:IDREF" use="optional" plm:refType="plm:Occurrence" plm:deprecated="true"/>
-        <xsd:attribute name="rootRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="viewControlRef" type="xsd:IDREF" use="optional" plm:refType="plm:ViewControl"/>
-        <xsd:attribute name="displayControlRef" type="xsd:IDREF" use="optional" plm:refType="plm:DisplayControl"/>
-        <xsd:attribute name="alternativeOfRef" type="plm:anyURIType" use="optional" plm:refType="plm:ProductView"/>
-        <xsd:attribute name="definition" type="plm:ProductViewDefinitionType" use="optional"/>
-        <xsd:attribute name="usage" type="plm:ProductViewUsageType" use="optional"/>
-        <xsd:attribute name="sectionRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="default" type="xsd:boolean" default="false"/>
-        <xsd:attribute name="state" type="plm:ProductViewStateEnum" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductView" type="plm:ProductViewType" substitutionGroup="plm:ConfigurationView"/>
-  <!-- -->
-  <!-- ***************************** InstanceGraph ********************************** -->
-  <!-- -->
-  <xsd:simpleType name="PreferredPartUnitsType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="millimetres"/>
-      <xsd:enumeration value="metres"/>
-      <xsd:enumeration value="inches"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="PartTypesType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=PartType</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="assembly"/>
-      <xsd:enumeration value="minimal"/>
-      <xsd:enumeration value="wire"/>
-      <xsd:enumeration value="solid"/>
-      <xsd:enumeration value="sheet"/>
-      <xsd:enumeration value="general"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="InstanceGraphType">
-    <xsd:annotation>
-      <xsd:documentation>
-      InstanceGraph. This is an element used as a container for elements which
-      represent an assembly graph. 
-      
-      Attributes:
-
-      rootInstanceRef: if the graph of Instances and StructureRevisionViews 
-                       in the InstanceGraph has a single root, which is an Instance, 
-                       this may be use to indicate it. 
-      rootRefs:        however, in general there may be more than one root, and the 
-                       roots may be Instances or StructureRevisionViews. The use of 
-                       this attribute to specify the root(s) is preferred.
-      
-      viewControlRef:    optional reference to a ViewControl
-      displayControlRef: optional reference to a DisplayControl
-      
-      Elements:
-      
-      May contain any element derived from Instance, GDEInstanceGroup, Structure
-      StructureRevision or StructureRevisionView. May also contain Transforms which
-      may be referenced by Instances.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertiesBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:Instance"/>
-          <xsd:element ref="plm:GDEInstanceGroup"/>
-          <xsd:element ref="plm:StructureRevisionView"/>
-          <xsd:element ref="plm:Structure"/>
-          <xsd:element ref="plm:StructureRevision"/>
-          <xsd:element ref="plm:Transform"/>
-        </xsd:choice>
-        <xsd:attribute name="rootInstanceRef" type="xsd:IDREF" use="optional" plm:refType="plm:Instance" plm:deprecated="true"/>
-        <xsd:attribute name="rootRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="viewControlRef" type="xsd:IDREF" use="optional" plm:refType="plm:ViewControl"/>
-        <xsd:attribute name="displayControlRef" type="xsd:IDREF" use="optional" plm:refType="plm:DisplayControl"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="InstanceGraph" type="plm:InstanceGraphType"/>
-  <!-- -->
-  <!-- ***************************** StructureDef ********************************* -->
-  <!-- -->
-  <xsd:complexType name="StructureDefBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element may contain one or more InstanceGraphs, representing
-      all or part of one or more assembly graphs. It also contains elements relating
-      to its display. 
-   
-      Attributes:
-
-      revision:           revision.
-      defaultProductViewRef: may be used to indicate a default from among the ProductViews.
-      default:            may be used to indicate that this is the default from among the
-                          StructureDefs in the document.
-      
-      revisionRuleRef:    reference to a RevisionRule which was used to generate this
-                          assembly from an Unconfigured Product Structure.
-                          NB: this elements is not defined in this schema.
-
-      variantRuleRef:     reference to a VariantRule which was use to generate this
-                          configured structure.
-                          
-      configured:         indicates whether the Structure is Configured or
-                          Unconfigured.
-                             
-      Elements:
-
-      This element may contain Representations, DisplayControls, ViewControls, Light
-      Sources, ProductViews, Materials, ConstructionGeometry, StructureRevisionViews,
-      GDEs, Sections or InstanceGraphs.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:InstanceGraph"/>
-          <xsd:element ref="plm:StructureRevisionView"/>
-          <xsd:element ref="plm:Representation"/>
-          <xsd:element name="ProductView" type="plm:ProductViewType"/>
-          <xsd:element name="DisplayControl" type="plm:DisplayControlType"/>
-          <xsd:element name="ViewControl" type="plm:ViewControlType"/>
-          <xsd:element ref="plm:LightSource"/>
-          <xsd:element ref="plm:Material"/>
-          <xsd:element name="ConstructionGeometry" type="plm:ConstructionGeometryType"/>
-          <xsd:element ref="plm:GDE"/>
-          <xsd:element name="Section" type="plm:SectionType"/>
-        </xsd:choice>
-        <xsd:attribute name="revision" type="xsd:decimal" use="optional"/>
-        <xsd:attribute name="defaultProductViewRef" type="xsd:IDREF" use="optional" plm:refType="plm:ProductView"/>
-        <xsd:attribute name="default" type="xsd:boolean" use="optional"/>
-        <xsd:attribute name="variantRuleRef" type="plm:anyURIType" plm:refType="plm:VariantRule"/>
-        <xsd:attribute name="revisionRuleRef" type="plm:anyURIType" plm:refType="plm:ConfigRule"/>
-        <xsd:attribute name="configured" type="xsd:boolean" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="StructureDef" type="plm:StructureDefBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ***************************** ProductDef ********************************* -->
-  <!-- -->
-  <xsd:complexType name="ProductDefType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element may contain one or more InstanceGraphs, containing ProductInstances
-      and ProductRevisionViews, representing all or part of one or more assembly graphs. 
-      It also contains elements relating to its display.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureDefBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductDef" type="plm:ProductDefType" substitutionGroup="plm:StructureDef"/>
-  <!-- -->
-  <!-- ***************************** UserData ********************************* -->
-  <!-- -->
-  <xsd:simpleType name="UserValueDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Basic types that can be represented by user value entries and tables.
-
-      int       = Data entity is an integer 
-      ints      = Data entity is a list of integers
-      real      = Data entity is a real
-      reals     = Data entity is a list of reals
-      boolean   = Data entity is a boolean (true/false)
-      booleans  = Data entity is a list of booleans
-      reference = Data entity is a reference (anyURI)
-      enum      = Data entity is an enumeration.
-      list      = Data entity is a list item.
-      dateTime  = Data entity is a dateTime
-                     (as in xsd:dateTime, i.e. CCYY-MM-DDThh:mm:ss).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="int"/>
-      <xsd:enumeration value="ints"/>
-      <xsd:enumeration value="real"/>
-      <xsd:enumeration value="reals"/>
-      <xsd:enumeration value="boolean"/>
-      <xsd:enumeration value="booleans"/>
-      <xsd:enumeration value="string"/>
-      <xsd:enumeration value="reference"/>
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="list"/>
-      <xsd:enumeration value="dateTime"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="UserListElementType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element defines a single entry in a UserList. The 'value' attribute 
-      must contain data of the type specified by the 'type' attribute in the owning list.
-
-      Attributes:
-
-      value:          data value (required).
-      description:    textual description of the value.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="value" type="xsd:string" use="required"/>
-    <xsd:attribute name="description" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="UserListDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element defines a list of user specified data items. Each item in the 
-      list is of the same type - as specified by the 'type' attribute'.
-
-      Attributes:
-
-      type:           type of data items, i.e. int, ints, etc. 
-
-      Elements:
-
-      Item:           One element per data item.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttributeBase">
-        <xsd:choice>
-          <xsd:element name="Item" type="plm:UserListElementType" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:choice>
-        <xsd:attribute name="type" type="plm:UserValueDataType" default="string"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="UserList" type="plm:UserListDataType" substitutionGroup="plm:Attribute"/>
-  <!-- -->
-  <xsd:complexType name="UserDataElementType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=UserValue</xsd:appinfo>
-      <xsd:documentation>
-      This element defines a single title/value pair in a UserData table.
-
-      Attributes:
-
-      title:          name of this entry in the table.
-      value:          value of the entry.
-      type:           datatype of the value, i.e. int, ints, etc, from UserValueDataType.
-      format:         format string as used by printf.
-      editable:       false if this value should not be modified by the receiving
-                      application.
-      
-      dataRef:        If type is 'reference', dataRef specifies the referenced element.
-                      The value attribute is ignored.
-
-                      If type is 'enum' or 'list', then a UserList element should be
-                      specified either by dataRef, or by being included as a sub-element.
-                      In the 'enum' case, the UserList gives the valid values of the
-                      enum; in the 'list' case, 'value' is ignored and the UserList IS
-                      the value of this entry in the table. 
-
-      minInclusive:   Minimum value allowed (inclusive).
-      minExclusive:   Minimum value allowed (exclusive).
-      maxInclusive:   Maximum value allowed (inclusive).
-      maxExclusive:   Maximum value allowed (exclusive).
-      stepValue:      Allowed values go from min to max in steps of 'stepValue'.
-      minLength:      Minimum list length allowed (only for type="list").
-      maxLength:      Maximum list length allowed (ditto).
-
-      Elements:
-
-      UserList:       May contain a single UserList element (see dataRef above).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="UserList" type="plm:UserListDataType" minOccurs="0"/>
-    </xsd:sequence>
-    <xsd:attribute name="title" type="xsd:string" use="required"/>
-    <xsd:attribute name="value" type="xsd:string" use="required"/>
-    <xsd:attribute name="type" type="plm:UserValueDataType" default="string"/>
-    <xsd:attribute name="format" type="xsd:string" use="optional"/>
-    <xsd:attribute name="dataRef" type="plm:anyURIType" use="optional"/>
-    <xsd:attribute name="editable" type="xsd:boolean" default="false"/>
-    <xsd:attribute name="minInclusive" type="xsd:double" use="optional"/>
-    <xsd:attribute name="minExclusive" type="xsd:double" use="optional"/>
-    <xsd:attribute name="maxInclusive" type="xsd:double" use="optional"/>
-    <xsd:attribute name="maxExclusive" type="xsd:double" use="optional"/>
-    <xsd:attribute name="stepValue" type="xsd:double" use="optional"/>
-    <xsd:attribute name="minLength" type="xsd:nonNegativeInteger" use="optional"/>
-    <xsd:attribute name="maxLength" type="xsd:nonNegativeInteger" use="optional"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="UserDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      The UserData element is a PLMXML Attribute used to represent a table of
-      title/value pairs. It is up to communicating applications to agree on the
-      meaning of these tables.
-    
-      UserData is based on the plm:Attribute base class so that it may be substituted
-      wherever PLMXML Attributes are permitted. 
-
-      Attributes:
-
-      type:           A string giving the type of UserData. No specified values.
-
-      Elements:
-
-      UserValue:      One element per entry in the table (at least one).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttributeBase">
-        <xsd:choice>
-          <xsd:element name="UserValue" type="plm:UserDataElementType" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:choice>
-        <xsd:attribute name="type" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="UserData" type="plm:UserDataType" substitutionGroup="plm:Attribute"/>
-  <!-- -->
-  <xsd:complexType name="UserEnumDataType">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=UserEnum</xsd:appinfo>
-      <xsd:documentation>
-      This element represents a user defined enumeration value. 
-
-      Attributes:
-
-      value:          the enum value (required).
-      listRef:        reference to a UserList element which gives the valid
-                      values in the enum. 'value' must be one of these values.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="value" type="xsd:string" use="required"/>
-    <xsd:attribute name="listRef" type="plm:anyURIType" use="optional" plm:refType="plm:UserList"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="EntityUserDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element is used to associate one or more entities with a set of UserData 
-      elements. It is substitutable for Attribute.
-      
-      Attributes:
-      
-      userDataRefs:  IDREFS to the UserData element(s).
-      
-      Elements:
-      
-      EntityRef:     Element derived from EntityRef, used to specify which entity
-                     is to be associated with the UserData.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttributeBase">
-        <xsd:choice>
-          <xsd:element ref="plm:EntityRef" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:choice>
-        <xsd:attribute name="userDataRefs" type="xsd:IDREFS" use="required" plm:refType="plm:UserData"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="EntityUserData" type="plm:EntityUserDataType" substitutionGroup="plm:Attribute"/>
-  <!-- -->
-  <xsd:simpleType name="XTDataType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This class represents the &lt;XTData&gt; element in a PLMXML
-      file, which is used to embed XT files in a Representation 
-      element, for example: 
-
-        &lt;Representation ...&gt;
-          &lt;XTRep&gt;
-            &lt;XTData&gt;T51 : TRANSMIT FILE 
-    created by modeller version 130021217 SCH_1300212_130060 
-    12 1 63 2 3 0 0 0 0 1e3 1e-8 0 0 0 1 0 1 1 4 5 6 7 8 9 10 
-    81 1 2 63 11 1 0 0 0 0 1 ...
-            &lt;/XTData&gt;
-          &lt;/XTRep&gt;
-        &lt;/Representation&gt;
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string"/>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="XTRepType">
-    <xsd:annotation>
-      <xsd:documentation>
-      XT Representation component of the PLMXML Schema
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:InternalRepBase">
-        <xsd:sequence>
-          <xsd:element name="XTData" type="plm:XTDataType"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="XTRep" type="plm:XTRepType" substitutionGroup="plm:InternalRep"/>
-  <!-- -->
-  <xsd:simpleType name="MassPropertyUnitType">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="grams,millimetres">
-        <xsd:annotation>
-          <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=GramsMillimetres</xsd:appinfo>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="grams,centimetres">
-        <xsd:annotation>
-          <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=GramsCentimetres</xsd:appinfo>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="kilograms,metres">
-        <xsd:annotation>
-          <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=KilogramsMetres</xsd:appinfo>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pounds,feet">
-        <xsd:annotation>
-          <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=PoundsFeet</xsd:appinfo>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pounds,inches">
-        <xsd:annotation>
-          <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=PoundsInches</xsd:appinfo>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:attributeGroup name="MassPropertyGroup">
-    <xsd:attribute name="error" type="plm:RealFieldType" use="optional"/>
-  </xsd:attributeGroup>
-  <!-- -->
-  <xsd:complexType name="MassPropertyRealType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:RealFieldType">
-        <xsd:attributeGroup ref="plm:MassPropertyGroup"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="LengthType">
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyRealType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="AreaType">
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyRealType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="DeprecatedVolumeType" plm:deprecated="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">substituteType=Volume;suppressId=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyRealType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="DeprecatedDensityType" plm:deprecated="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">substituteType=Density;suppressId=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyRealType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="MassType">
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyRealType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="MassPropertyVectorType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:VectorType">
-        <xsd:attributeGroup ref="plm:MassPropertyGroup"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="DeprecatedCentreOfMassType" plm:deprecated="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">substituteType=CentreOfMass;suppressId=true</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyVectorType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="MassPropertyArrayFieldType">
-    <xsd:restriction base="plm:DoubleListType">
-      <xsd:length value="3"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="MassPropertyArrayType">
-    <xsd:simpleContent>
-      <xsd:extension base="plm:MassPropertyArrayFieldType">
-        <xsd:attributeGroup ref="plm:MassPropertyGroup"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="MomentsOfInertiaType">
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyArrayType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="ProductsOfInertiaType">
-    <xsd:simpleContent>
-      <xsd:restriction base="plm:MassPropertyArrayType"/>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="MassPropertiesType">
-    <xsd:annotation>
-      <xsd:documentation>
-      PLMXML Attribute describing mass properties.
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">ChildElementOccurrences=1</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttributeBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element name="Length" type="plm:LengthType"/>
-          <xsd:element name="Area" type="plm:AreaType"/>
-          <xsd:element name="Volume" type="plm:DeprecatedVolumeType"/>
-          <xsd:element name="Density" type="plm:DeprecatedDensityType"/>
-          <xsd:element name="Mass" type="plm:MassType"/>
-          <xsd:element name="CentreOfMass" type="plm:DeprecatedCentreOfMassType"/>
-          <xsd:element name="MomentsOfInertia" type="plm:MomentsOfInertiaType"/>
-          <xsd:element name="ProductsOfInertia" type="plm:ProductsOfInertiaType"/>
-        </xsd:choice>
-        <xsd:attribute name="units" type="plm:MassPropertyUnitType" default="kilograms,metres"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="MassProperties" type="plm:MassPropertiesType" substitutionGroup="plm:Attribute"/>
-  <!-- -->
-  <xsd:complexType name="DocumentBase" abstract="true">
-    <xsd:annotation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=DocumentBase</xsd:appinfo>
-      <xsd:documentation>
-      This class corresponds to a top-level (root) element in a PLMXML file. 
-
-      Attributes:
-
-      author:        Author.
-      date:          Date modified.
-      time:          Time modified.
-      language:      Language used, e.g. in comments.
-      schemaVersion: Version of the schema this file was written for, e.g. "3.0".
-      
-      referenceSearchPaths:   A space-separated sequence of URIs or other strings used
-                              by the Application to specify base URIs or other contexts
-                              to enable relative URIs in the document to be resolved. The
-                              URIs should be processed in sequence.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="schemaVersion" type="xsd:decimal" use="required"/>
-        <xsd:attribute name="author" type="xsd:string" use="required"/>
-        <xsd:attribute name="time" type="xsd:time" use="required"/>
-        <xsd:attribute name="date" type="xsd:date" use="required"/>
-        <xsd:attribute name="language" type="xsd:language" default="en"/>
-        <xsd:attribute name="referenceSearchPaths" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="MarkupType">
-    <xsd:annotation>
-      <xsd:documentation>
-      The redline markup element for PLMXML - is a simple annotation
-      type that describes its textual data via the xhtml spec. Thus
-      the text can include format and font information as per a 
-      normal html document.
-      The redline element(s) is defined via simple polyline geometric
-      element and references to related entities can be made via the 
-      'EntityRef' element.
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttributeBase">
-        <xsd:sequence>
-          <xsd:element name="html">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" maxOccurs="unbounded"/>
-              </xsd:sequence>
-              <xsd:anyAttribute namespace="http://www.w3.org/1999/xhtml"/>
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="Redline" type="plm:PolyLineType" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:EntityRef" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="author" type="xsd:string" use="optional"/>
-        <xsd:attribute name="time" type="xsd:time" use="optional"/>
-        <xsd:attribute name="date" type="xsd:date" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Markup" type="plm:MarkupType" substitutionGroup="plm:Attribute"/>
-  <!-- -->
-  <xsd:complexType name="SchemaType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element contains or references an XML Schema used by the document it occurs
-      in. The schema may be a full schema, or a 'skeleton' schema only provided to convey
-      type hierarchy information.
-      
-      Attributes:
-      
-      schemaRef:         URI Reference to schema file
-      
-      Elements:
-      
-      The actual schema, in the xsd namespace.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:sequence>
-          <xsd:any namespace="##any" processContents="strict" maxOccurs="unbounded"/>
-          <!-- have to use ##any to allow for appinfo elements -->
-        </xsd:sequence>
-        <xsd:attribute name="schemaRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="SchemaInfoType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element contains information about a PLMXML schema extension. It is embedded
-      in the schema file inside an appinfo element.
-      
-      Attributes:
-      
-      version:       e.g. "4.1.1"
-      status:        e.g. "development", "release".
-      skeleton:      true if this is a schema skeleton, i.e. it just defines the type
-                     hierarchy but does not specify any attributes or sub-elements.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="author" type="xsd:string"/>
-    <xsd:attribute name="name" type="xsd:string"/>
-    <xsd:attribute name="date" type="xsd:date"/>
-    <xsd:attribute name="version" type="xsd:string"/>
-    <xsd:attribute name="status" type="xsd:string"/>
-    <xsd:attribute name="skeleton" type="xsd:boolean" default="false"/>
-  </xsd:complexType>
-  <xsd:element name="SchemaInfo" type="plm:SchemaInfoType"/>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionModeType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to define how fully components are to be loaded:
-
-      full:    Components are to be fully loaded (heavyweight)
-      partial: Components are to be partially loaded (lightweight)
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="full"/>
-      <xsd:enumeration value="partial"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionErrorActionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to determine the action when a load operation fails: 
-      
-      abort:    The load operation will be aborted
-      continue: The load operation will continue despite errors
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="abort"/>
-      <xsd:enumeration value="continue"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionComponentSetType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration for defining how the subcomponents of a structure should be loaded:
-
-      top:     Do not load any of the sub-components of a loaded component, Only load specified 
-               top-level assemblies and their assembly-level geometry
-      last:    Load the subcomponents specified in each component's file
-      all:     Load all the sub-components, recursively
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="top"/>
-      <xsd:enumeration value="last"/>
-      <xsd:enumeration value="all"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to determine which version of a component is loaded:
-    
-      specified: Load the version of the component as specified by the hierarchy
-      latest:    Load the latest version of the subcomponent
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="specified"/>
-      <xsd:enumeration value="latest"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionLinkedComponentsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to determine how components related by interpart relations
-      are to be loaded
-
-      none:      Do not load related components
-      immediate: Only load directly related components
-      all:       Load directly and indirectly related components
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="none"/>
-      <xsd:enumeration value="immediate"/>
-      <xsd:enumeration value="all"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionPartFamilyComponentsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to determine the action if missing part family members are encountered:
-      
-      ignore:   Ignore the missing part family members
-      generate: Create missing part family members
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="generate"/>
-      <xsd:enumeration value="ignore"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionPreferredRepresentationsScopeType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to determine to what extent the named representations are applied:
-      
-      top:  Apply geometric configurations to single structure level only
-      all:  Apply geometric configurations to all levels
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="top"/>
-      <xsd:enumeration value="all"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="LoadOptionPreferredRepresentationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element defines an entry in the ordered list of representation names that should be 
-      selected.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="name" type="xsd:string"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="LoadOptionPreferredRepresentationsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element defines an ordered list of representation names that should be 
-      selected. The order of appearance in the element defines the order 
-      of usage. Only the first valid geometric configuration, encountered in the list,
-      is applied to any one item.
-      
-      Also known as 'ReferenceSets' in NX.
-
-      Elements:
-       
-      PreferredRepresentation: One element per configuration. (At least one).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:choice>
-          <xsd:element name="PreferredRepresentation" type="plm:LoadOptionPreferredRepresentationType" minOccurs="1" maxOccurs="unbounded"/>
-        </xsd:choice>
-        <xsd:attribute name="scope" type="plm:LoadOptionPreferredRepresentationsScopeType"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="LoadOptionSearchPathType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element defines a single search path.
-
-      Attributes:
-      
-      path:       The search path
-      recursive:  True if the subdirectories of the search directory must also be searched
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="path" type="xsd:string" use="required"/>
-    <xsd:attribute name="recursive" type="xsd:boolean" default="false"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:simpleType name="LoadOptionSearchPathsLocationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enumeration to determine where where to find the files to load.
-      
-      local:       From the directory of the parent assembly.
-      specified:   By using the explicit filenames stored in the loaded files  
-                   (for example a CAD file for an assembly may contain 
-                   explicit filenames for the CAD files of the sub-assemblies).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="local"/>
-      <xsd:enumeration value="specified"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="LoadOptionSearchPathsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element defines an ordered list of search.
-
-      Elements:
-       
-      SearchPath:    One element per search path. (At least one).
-
-      Attributes:      
-      
-      location:      This is an enum with values:
-        local:       From the directory of the parent assembly.
-        specified:   By using the explicit filenames stored in the loaded files  
-                     (for example a CAD file for an assembly may contain 
-                     explicit filenames for the CAD files of the sub-assemblies).
-      
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:choice>
-          <xsd:element name="SearchPath" type="plm:LoadOptionSearchPathType" minOccurs="1" maxOccurs="unbounded"/>
-        </xsd:choice>
-        <xsd:attribute name="location" type="plm:LoadOptionSearchPathsLocationType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="LoadOptionsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      The purpose of this element is to specify global options or parameters 
-      which control the precise way in which an application loads a Product Structure. 
-      
-      This is to ensure that different applications can load, and visualise, 
-      the same Product Structure in exactly the same way.
-
-      There is at most one LoadOptions element in a PLM XML file.
-      
-      Elements:
-      
-      PreferredRepresentations:   The list of named representations to be selected.
-      SearchPaths:                Optional list of search paths for data
-
-      Attributes:
-      
-      mode:                   Load items fully or partially.
-      errorAction:            Action to take when a component fails to load.
-      componentSet:           Load none, all or last-used of the subcomponents
-      revision:               Load the specified or latest revision of the components
-      componentSubstitution:  Determines whether component substitution is permitted
-      linkedComponents:       Determines how related components are loaded.
-      partFamilyComponents:   Determines the action to take if a part family member is missing.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="PreferredRepresentations" type="plm:LoadOptionPreferredRepresentationsType" minOccurs="0" maxOccurs="1"/>
-      <xsd:element name="SearchPaths" type="plm:LoadOptionSearchPathsType" minOccurs="0" maxOccurs="1"/>
-    </xsd:sequence>
-    <xsd:attribute name="mode" type="plm:LoadOptionModeType" default="full"/>
-    <xsd:attribute name="errorAction" type="plm:LoadOptionErrorActionType" default="continue"/>
-    <xsd:attribute name="componentSet" type="plm:LoadOptionComponentSetType" default="all"/>
-    <xsd:attribute name="revision" type="plm:LoadOptionRevisionType" use="optional"/>
-    <xsd:attribute name="componentSubstitution" type="xsd:boolean" default="true"/>
-    <xsd:attribute name="linkedComponents" type="plm:LoadOptionLinkedComponentsType" default="none"/>
-    <xsd:attribute name="variant" type="xsd:string" use="optional"/>
-    <xsd:attribute name="partFamilyComponents" type="plm:LoadOptionPartFamilyComponentsType" default="generate"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="DocumentHeaderType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element contains header information for the PLMXML document. 
-      
-      Attributes:
-    
-      traverseRootRefs:   a collection of elements to start from, if traversing
-                          the PLM XML elements according to some rule.
-      transferContext:    a string which can be used to indicate the context in
-                          which this PLMXML file is being transferred.
-      
-      Elements:
-      
-      Schema:             a collection of schema elements.
-      LoadOptions:        Global options for the loading of the associated document.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:sequence>
-          <xsd:element name="Schema" type="plm:SchemaType" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element name="LoadOptions" type="plm:LoadOptionsType" minOccurs="0" maxOccurs="1"/>
-        </xsd:sequence>
-        <xsd:attribute name="traverseRootRefs" type="plm:uriReferenceListType" use="optional"/>
-        <xsd:attribute name="transferContext" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="PLMXMLType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This defines the type of the outermost element in a PLMXML file.
-      
-      Elements:
-      
-      Header:         Document header
-      AttribOwner:    Any elements derived from AttribOwner are allowed under
-                      this element, except as described below.
-      ViewControl:    Represents a camera or view point in the Motion schema,
-                      where a ViewControl does not already exist under a ProductDef.
-      </xsd:documentation>
-      <!-- The elements inside the appinfos are not part of the actual schema, but are
-      processed by the CodeGenerator, and so appear in the PLM XML SDK run-time
-      model and API. -->
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">sdkname=Document</xsd:appinfo>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">AdditionalElements=
-              http://www.plmxml.org/Schemas/PLMXMLSchema:ProductDefType ProductDef
-              http://www.plmxml.org/Schemas/PLMXMLSchema:StructureDef StructureDef
-              http://www.plmxml.org/Schemas/PLMXMLSchema:Representation Representation
-              http://www.plmxml.org/Schemas/PLMXMLSchema:ConstructionGeometryType ConstructionGeometry
-              http://www.plmxml.org/Schemas/PLMXMLSchema:Structure Structure
-              http://www.plmxml.org/Schemas/PLMXMLSchema:StructureRevision StructureRevision</xsd:appinfo>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:DocumentBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element name="Header" type="plm:DocumentHeaderType"/>
-          <xsd:element ref="plm:AttribOwner"/>
-          <xsd:element ref="plm:ViewControl"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PLMXML" type="plm:PLMXMLType"/>
-  <!-- -->
-  <!-- ************************* Structure *********************************** -->
-  <!-- -->
-  <xsd:complexType name="StructureBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a base type for objects which can be revisioned and support hierarchical, 
-      configurable structure.
-      
-      Attributes:
-      
-      catalogueId: The identifier of the Structure, unique in some context, e.g. an 
-                   Organisation.
-      
-      optionRefs:  Options. Each Option gives the full set of allowed values for this
-                   product. ProductRevisions may specify an Option with a sub-set of
-                   allowed values.
-      propertyRefs: reference to Properties
-      
-      Elements:
-
-      PropertyGroup
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="catalogueId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="optionRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Option"/>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Structure" type="plm:StructureBase" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* StructureRevision *********************** -->
-  <!-- -->
-  <xsd:complexType name="StructureRevisionBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of a Structure.
-      
-      Attributes:
-    
-      revision:      Identifies the revision. Could be numeric, alphabetic, or a mixture.
-      version:       Gives the current 'version' of this revision. The version captures
-                     changes en route to the next revision of this Product. 
-      masterRef:     Reference to the Structure of which this is a version.
-      optionRefs:    Options. Each Option gives the set of allowed values for this
-                     StructureRevision. 
-      instanceRefs:  Reference to elements derived from Instance, which define the
-                     hierarchical structure. Both StructureRevision and
-                     StructureRevisionView can have instanceRefs. In the case of
-                     StructureRevision, the element is then representing a 'default' or
-                     'unspecified' view. These Instances should not be GDEInstances.
-                     
-      gdeInstanceRefs: Referenced GDEInstance or GDEInstanceGroup elements.
-
-     
-      simplifiedRepRefs: If an assembly has replacement representations (that is, in case
-                     the assembly structure is not important in some context, then the
-                     replacement representations can be used).
-      propertyRefs:  reference to Properties  
-
-      Elements:
-                     
-      VariantDefault    
-      VariantRuleCheck
-      PropertyGroup
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:VariantDefault"/>
-          <xsd:element ref="plm:VariantRuleCheck"/>
-          <xsd:element ref="plm:PropertyGroup"/>
-        </xsd:choice>
-        <xsd:attribute name="revision" type="xsd:string" use="required"/>
-        <xsd:attribute name="version" type="xsd:nonNegativeInteger" use="optional"/>
-        <xsd:attribute name="masterRef" type="plm:anyURIType" use="required" plm:refType="plm:Structure"/>
-        <xsd:attribute name="optionRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Option"/>
-        <xsd:attribute name="instanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Instance"/>
-        <xsd:attribute name="gdeInstanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="simplifiedRepRefs" type="plm:uriReferenceListType" use="optional"/>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="StructureRevision" type="plm:StructureRevisionBase" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* StructureRevisionView ****************************** -->
-  <!-- -->
-  <xsd:simpleType name="OccurrenceControlEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="explicit"/>
-      <xsd:enumeration value="implicit"/>
-      <xsd:enumeration value="mixed"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="StructureRevisionViewBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a base type for elements representing a 'view' (design, 
-      manufacturing, etc) of a StructureRevision.
-
-      Attributes:
-
-      revisionRef:      Specifies the StructureRevision of which this is a view.
-      viewRef:          A reference to a view element (e.g. 'design')
-      structureViewRef: A reference to the corresponding element derived from
-                        StructureView (e.g. ProductStructureView), of which this
-                        is a revision.
-      
-      instanceRefs:     Referenced Instances which define the hierarchical structure.
-                      
-      gdeInstanceRefs:  Referenced GDEInstance or GDEInstanceGroup elements. 
-      
-      connectionInstanceRefs: Referenced ConnectionInstance elements.
-      
-      signalInstanceRefs: Reference to Instance elements which reference SignalRevision 
-                        elements.
-                        
-      routeInstanceRefs: Reference to Instance elements which reference Route 
-                        elements.
-                      
-      occurrenceRefs:   if an assembly, this element may have certain Occurrences singled
-                        out, so that, for example, they can have different Materials
-                        associated, or can be repositioned.
-                        
-      locationInstanceRefs: Reference to LocationInstance elements.
-      propertyRefs:     reference to properties
-      ruleRefs:         reference to configuration rules (derived from ConfigRuleBase), which
-                        specify how this structure was configured.
-                        
-      occurrenceControlState: "explicit", "implicit", or "mixed"
-
-      Elements:
-
-      Occurrence:       These Occurrences play the same role as occurrenceRefs, above.
-      PropertyGroup     a group of Properties of the StructureRevisionView
-      RepresentationEntity: 'logical entities' in the StructureRevisionView, which 
-                        correspond to a number of equivalent objects in Representation files
-      EntityPropertyGroup:  used to specify Properties of logical entities in the
-                        StructureRevisionView
-      SymbolicOccurrence: SymbolicOccurrences in the context of this StructureRevisionView
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Occurrence" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-          <xsd:element ref="plm:RepresentationEntity" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:EntityPropertyGroup" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:SymbolicOccurrence" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="revisionRef" type="plm:anyURIType" use="optional" plm:refType="plm:StructureRevision"/>
-        <xsd:attribute name="viewRef" type="plm:anyURIType" use="optional" plm:refType="plm:View"/>
-        <xsd:attribute name="structureViewRef" type="plm:anyURIType" use="optional" plm:refType="plm:StructureView"/>
-        <xsd:attribute name="instanceRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Instance"/>
-        <xsd:attribute name="gdeInstanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="connectionInstanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:ConnectionInstance"/>
-        <xsd:attribute name="signalInstanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Instance"/>
-        <xsd:attribute name="routeInstanceRefs" type="plm:uriReferenceListType" use="optional"/>
-        <xsd:attribute name="occurrenceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Occurrence"/>
-        <xsd:attribute name="locationInstanceRefs" type="plm:uriReferenceListType" use="optional"/>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-        <xsd:attribute name="ruleRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:ConfigRule"/>
-        <xsd:attribute name="occurrenceControlState" type="plm:OccurrenceControlEnum" default="implicit"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="StructureRevisionView" type="plm:StructureRevisionViewBase" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* Product ****************************** -->
-  <!-- -->
-  <xsd:simpleType name="ProductSourceEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="make"/>
-      <xsd:enumeration value="buy"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="ProductType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is the revision-independent Product, derived from Structure.
-      It corresponds to the STEP 'product'.
-      
-      Attributes:
-      
-      productId:        The identifier of the Product, unique in some context, e.g. an 
-                        Organisation.
-      alternateForRef:  An 'alternate' Product is one which is substitutable, in all 
-                        contexts, for a particular Product. If this is an 'alternate'
-                        Product, then this attribute references the Product for which
-                        this is an alternate.
-      unitRef:          The default Unit for the 'quantity' attribute of any referencing
-                        ProductInstance elements.
-      designRequired:   true if all the revisions of this Product must have
-                        at least one associated DesignRevision
-      source:           whether the Product is manufactured or bought-in
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureBase">
-        <xsd:attribute name="productId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="alternateForRef" type="plm:anyURIType" use="optional" plm:refType="plm:Product"/>
-        <xsd:attribute name="unitRef" type="plm:anyURIType" use="optional" plm:refType="plm:Unit"/>
-        <xsd:attribute name="designRequired" type="xsd:boolean" default="true"/>
-        <xsd:attribute name="source" type="plm:ProductSourceEnum" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Product" type="plm:ProductType" substitutionGroup="plm:Structure"/>
-  <!-- -->
-  <!-- ************************* ProductRevision *********************** -->
-  <!-- -->
-  <xsd:complexType name="ProductRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of a Product. It corresponds to STEP 'product_definition_formation'.
-      
-      Attributes:
-      
-      primaryDesignRef: The primary DesignRevision, if any. This attribute is
-                        deprecated. Use primaryDesign on RepresentedByRelation
-                        instead.
-      source:           Whether the Product is manufactured or bought-in.
-      designRequired:   true if the ProductRevision must have at least one
-                        associated DesignRevision.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionBase">
-        <xsd:attribute name="primaryDesignRef" type="plm:anyURIType" use="optional" plm:refType="plm:DesignRevision" plm:deprecated="true"/>
-        <xsd:attribute name="source" type="plm:ProductSourceEnum" use="optional"/>
-        <xsd:attribute name="designRequired" type="xsd:boolean" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductRevision" type="plm:ProductRevisionType" substitutionGroup="plm:StructureRevision"/>
-  <!-- -->
-  <!-- ************************* ProductRevisionView ******************************** -->
-  <!-- -->
-  <xsd:complexType name="ProductRevisionViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a 'view' (e.g. 'design', 'manufacturing', 'maintenance') of a revision of a 
-      Product.
-      
-      Attributes:
-      
-      representationRefs: Representations of the ProductRevisionView.
-      materialRef:        an optional Material for use when displaying the
-                          ProductRevisionView.
-      preferredUnits:     (deprecated) The units preferred when presenting this element to the user.
-                          Note that this does NOT affect any numerical values
-                          representing lengths in the PLMXML file - these are always in
-                          metres. This attribute is deprecated - use a DisplayPreferences
-                          Property instead.
-      geometryRefs:       geometry elements referenced by the ProductRevisionView.
-      type:               assembly, minimal, wire, solid, sheet or general.
-      
-      annotation3DGroupRefs: (deprecated) reference to any 3D Annotation groups
-                          associated with the ProductRevisionView.
-                          (note: these are not defined within this schema).
-                          
-      partRefs:           (deprecated). If an assembly, it is also possible to 'instance' 
-                          other Parts directly without the need for an actual Instance 
-                          element. However this is limited to cases where information 
-                          stored on the Instance (such as Transform) is not required.
-      designRequired:     true if the ProductRevisionView must have at least one
-                          associated DesignRevisionView.
-      
-      Elements:
-
-      Representation:     see representationRefs.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionViewBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:Representation"/>
-        </xsd:choice>
-        <xsd:attribute name="representationRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Representation"/>
-        <xsd:attribute name="materialRef" type="xsd:IDREF" use="optional" plm:refType="plm:Material"/>
-        <xsd:attribute name="preferredUnits" type="plm:PreferredPartUnitsType" default="millimetres" plm:deprecated="true"/>
-        <xsd:attribute name="geometryRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Entity"/>
-        <xsd:attribute name="type" type="plm:PartTypesType" use="optional"/>
-        <xsd:attribute name="annotation3DGroupRefs" type="plm:uriReferenceListType" use="optional" plm:deprecated="true"/>
-        <xsd:attribute name="partRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:ProductRevisionView" plm:deprecated="true"/>
-        <xsd:attribute name="designRequired" type="xsd:boolean" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductRevisionView" type="plm:ProductRevisionViewType" substitutionGroup="plm:StructureRevisionView"/>
-  <!-- -->
-  <xsd:element name="Part" type="plm:ProductRevisionViewType" substitutionGroup="plm:StructureRevisionView" plm:deprecated="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      The Part element is only provided for legacy compatibility. Use the
-      ProductRevisionView element in its place.
-      </xsd:documentation>
-      <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">output=ignore</xsd:appinfo>
-    </xsd:annotation>
-  </xsd:element>
-  <!-- -->
-  <!-- ****************************** View ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a 'view' (e.g. 'design', 'manufacturing', 'maintenance'). Referenced by a 
-      ProductRevisionView.
-      
-      Attributes:
-      
-      (the 'name' attribute of the View is inherited from AttribOwnerBase)
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="View" type="plm:ViewType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- *********************** GDERelationshipType *********************** -->
-  <!-- -->
-  <xsd:simpleType name="GDERelationshipType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is the type of a relationship between two Occurrences or Instances.
-      
-      associated:
-      attached:
-      related:
-      connection:      An Occurrence of a Connection, related to an Occurrence
-                       of a GDE to which it connects.
-      implementation:  An 'implemented by' relation, for example between an
-                       Occurrence of a Connection and an Occurrence of a
-                       ProductRevisionView; or between an Occurrence of a
-                       functional PRV and a physical PRV.
-      implements:      The inverse of 'implemented by'. For example, an Occurrence
-                       of a PRV may implement a RouteSection.
-      realisation:
-      misc:
-      
-      signalSource:    from Instance of a Signal to Occurrence of a Signal,
-                       Connection, GDE or Product.
-      signalTarget:    from Instance of a Signal to Occurrence of a Signal,
-                       Connection, GDE or Product.
-      signalTransmitter: from Instance of a Signal to Occurrence of a Signal,
-                       Connection, GDE or Product.
-                       
-      processVariable: from Instance of a Signal to the corresponding
-                       Occurrence of a ProcessVariable.
-      redundancy:      from Instance of Signal to Occurrence of a Signal
-                       which is replicated by the first one.
-                       
-      signalValue:     from Instance of a Signal to a SignalValue.
-      processVariableValue: from Instance of a ProcessVariable to a
-                       ValueWithUnit.
-      
-      route:           from an Occurrence or Instance to a Route.
-      software:        from an Occurrence or Instance of a Processor
-                       or Software to an Occurrence or Instance of a
-                       Software which uses or depends on it.
-      processorGateway: from an Occurrence or Instance of a Processor
-                       to an Occurrence or Instance of another Processor 
-                       for which the first Processor acts as a Gateway.
-
-      mass:            Relates a MechanismOccurrence or MechanismInstance to an
-                       Occurrence or Instance in the ProductStructure that
-                       determines its mass.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="associated"/>
-      <xsd:enumeration value="attached"/>
-      <xsd:enumeration value="related"/>
-      <xsd:enumeration value="connection"/>
-      <xsd:enumeration value="implementation"/>
-      <xsd:enumeration value="implements"/>
-      <xsd:enumeration value="realisation"/>
-      <xsd:enumeration value="misc"/>
-      <xsd:enumeration value="signalSource"/>
-      <xsd:enumeration value="signalTarget"/>
-      <xsd:enumeration value="signalTransmitter"/>
-      <xsd:enumeration value="processVariable"/>
-      <xsd:enumeration value="redundancy"/>
-      <xsd:enumeration value="signalValue"/>
-      <xsd:enumeration value="processVariableValue"/>
-      <xsd:enumeration value="route"/>
-      <xsd:enumeration value="software"/>
-      <xsd:enumeration value="processorGateway"/>
-      <xsd:enumeration value="mass"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <!-- ******************** GDEReferenceType ********************* -->
-  <!-- -->
-  <xsd:complexType name="GDEReferenceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A reference from a GDEInstance to an Occurrence or InstancePath.
-       
-      An entity in a Representation can also be specified.
-      
-      Attributes:
-     
-      type:           type of the Reference.
-      occurrenceRef:  reference to an Occurrence or InstancePath.
-      pathRefs:       a list of Instance elements defining a path through the
-                      Structure. pathRefs and occurrenceRef should not both be
-                      present.
-      targetRef:      reference to a RepresentationEntity.
-      
-      Sub-elements:
-     
-      EntityRef:      (deprecated) reference to an Entity in a Representation. This must 
-                      be a Representation of the 'bottom Structure' of the Occurrence
-                      or InstancePath.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:EntityRef" minOccurs="0" plm:deprecated="true"/>
-        </xsd:sequence>
-        <xsd:attribute name="type" type="plm:GDERelationshipType" use="optional"/>
-        <xsd:attribute name="occurrenceRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="targetRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="pathRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Instance"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <!-- -->
-  <!-- ************************* GDEBase ************************* -->
-  <!-- -->
-  <xsd:complexType name="GDEBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      The GDE element represents an internal constituent of a Structure
-      object, such as a Design Feature, Port, Annotation, etc. The Structure
-      instances the GDE by means of a GDEInstance.
-
-      Attributes:
-
-      gdeInstanceRefs: a list of references to associated GDEInstances or
-                       GDEInstanceGroups. This is to allow the GDE to have
-                       internal structure.
-      propertyRefs:    reference to properties
-
-      Elements:
-      
-      PropertyGroup
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="gdeInstanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GDE" type="plm:GDEBase" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ****************************** LinkBase ****************************** -->
-  <!-- -->
-  <xsd:complexType name="LinkBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      A type of GDE which represents a non-revisionable connection between 
-      InstancePaths in an assembly.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GDEBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Link" type="plm:LinkBase" substitutionGroup="plm:GDE"/>
-  <!-- -->
-  <!-- ************************** ConnectionBase ************************** -->
-  <!-- -->
-  <xsd:complexType name="ConnectionBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      A Connection is a structured object which represents a connection between a
-      number of InstancePaths in an assembly.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Connection" type="plm:ConnectionBase" substitutionGroup="plm:Structure"/>
-  <!-- -->
-  <!-- ************************* ConnectionRevisionType ************************* -->
-  <!-- -->
-  <xsd:complexType name="ConnectionRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of a Connection. 
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConnectionRevision" type="plm:ConnectionRevisionType" substitutionGroup="plm:StructureRevision"/>
-  <!-- -->
-  <!-- ************************ ConnectionRevisionViewType *********************** -->
-  <!-- -->
-  <xsd:complexType name="ConnectionRevisionViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a 'view' (e.g. 'design', 'manufacturing', 'maintenance') of a 
-      revision of a Connection.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionViewBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConnectionRevisionView" type="plm:ConnectionRevisionViewType" substitutionGroup="plm:StructureRevisionView"/>
-  <!-- -->
-  <!-- ******************************* Feature ************************************ -->
-  <!-- -->
-  <xsd:complexType name="FeatureBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      This abstract datatype describes a single feature within the feature
-      tree hierarchy. The feature description contains basic information
-      such as name and type, as well as information to link the feature
-      to the originating application. Parameter descriptions can also
-      be included in the feature description.
-
-      Attributes:
-
-      nextFeature       - (optional) the XML id of the next feature in the 
-                          feature hierarchy.
-      targetFeature     - (optional) the XML id of the target feature that this
-                          feature relies on. The target feature defines which
-                          feature forms the resultant entity.
-      toolFeature       - (optional) the XML id of the tool feature that this
-                          feature relies on.  
-      suppressed        - (default=false) TRUE if the feature is suppressed in 
-                          the feature tree.
-      editable          - (default=false)) TRUE if any parameters of the feature may 
-                          be edited.
-
-      Elements:
-
-      Type              - (1) element describing the type of feature. This is an 
-                          application specific type. The receiving application is not 
-                          meant to deduce or interpret the type but could use it to 
-                          classify or group the feature.
-
-      Parameter         - (0 or many) elements to describe the parameters associated 
-                          with the  feature. It is up to the application to decide 
-                          what parameters to exchange or describe within the feature 
-                          description.
-      EntityRef         - (0 or many) references to entities on another representation
-                          (e.g. a BRep) expressed as PLMXML references.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GDEBase">
-        <xsd:sequence>
-          <xsd:element name="Type" type="plm:UserEnumDataType"/>
-          <xsd:element name="Parameter" type="plm:UserDataElementType" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:element ref="plm:EntityRef"/>
-          </xsd:choice>
-        </xsd:sequence>
-        <xsd:attribute name="nextFeature" type="xsd:IDREF" use="optional" plm:refType="plm:Feature">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="targetFeature" type="xsd:IDREF" use="optional" plm:refType="plm:Feature">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="toolFeature" type="xsd:IDREF" use="optional" plm:refType="plm:Feature">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="suppressed" type="xsd:boolean" default="false"/>
-        <xsd:attribute name="editable" type="xsd:boolean" default="false"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Feature" type="plm:FeatureBase" substitutionGroup="plm:GDE"/>
-  <!-- -->
-  <xsd:complexType name="EnumFeatureType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Generic feature element which can be used to enumerate
-      'any' parameterised feature. No semantic or specialised 
-      information is exchanged via this schema.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:FeatureBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="EnumFeature" type="plm:EnumFeatureType" substitutionGroup="plm:Feature"/>
-  <!-- -->
-  <!-- ******************************** FeatureTree ************************** -->
-  <!-- -->
-  <xsd:complexType name="FeatureTreeType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This datatype describes a feature hierarchy for feature based
-      modelling system.
-  
-      The feature hierarchy is represented via a single linked list of
-      set of feature elements that reference the next feature in the 
-      hieratchy. The linked list hierachy must describe the features
-      in 'replay' order (ie. first operation first in the hierachy).
-      There is scope to describe 'tree-like' dependencies via additional
-      'dependentFeatures' reference attributes. 
-  
-      The feature tree is represented within PLMXML as an 'Internal Representation'
-      - the FeatureTreeType is based on InternalRepBase and the 
-      element FeatureTree is a substitution class for InternalRep.
-
-      Attributes:
-
-      firstFeature   - (optional) the XML id of the first feature in the 
-                       feature hierarchy.
-      editable       - (optional) TRUE if any features of the feature tree 
-                       may be edited.
-
-      Elements:
-
-      Type           - (1) element describing the type of feature tree. This is an 
-                       application specific type. The receiving application is not 
-                       meant to deduce or interpret the type but could use it to 
-                       classify feature tree.
-
-      Feature        - (0 or many) the list of features thaat make up the feature tree.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:InternalRepBase">
-        <xsd:sequence>
-          <xsd:element name="Type" type="plm:UserEnumDataType"/>
-          <xsd:element ref="plm:Feature" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="firstFeature" type="xsd:IDREF" use="optional" plm:refType="plm:Feature">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="editable" type="xsd:boolean" default="false"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="FeatureTree" type="plm:FeatureTreeType" substitutionGroup="plm:InternalRep"/>
-  <!-- -->
-  <!-- ****************************** StructureUsage ****************************** -->
-  <!-- -->
-  <xsd:complexType name="StructureUsageBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      A base type for a usage relation between Structure, StructureRevision and
-      StructureRevisionView elements.
-
-      Attributes:
-
-      instancedRef     Reference to the 'used' element. This should be derived from 
-                       StructureRevisionView, StructureRevision, StructureView, or
-                       Structure, or GDE. In the latter cases some other context must determine
-                       which view or revision is intended.
-
-      partRef:         This attribute is retained for compatibility reasons and should
-                       only be used for Product Structure, not general Structures.
-
-      transformRef:    optional Transform which positions the 'used' element in the 
-                       coordinates of the using one.
-
-      materialRef:     reference to a Material element to use when displaying the 'used' 
-                       element.
-      propertyRefs:    reference to properties
-
-      representationRefs: an optional collection of Representations of the 'used' element.
-      designRequired:  true if the 'used' element must have at least one
-                       corresponding element in the Design Structure.
-      
-      Elements:
-
-      Transform:       see transformRef. (This should not be used in conjunction with
-                       transformRef).
-      Representation:  see representationRefs
-      VariantCondition:An optional VariantCondition
-
-      Reference        Elements referenced by the StructureUsage. This enables the
-                       representation of such relationships as "connected to", and
-                       "implemented by".
-      PropertyGroup    a group of Properties of the StructureUsage
-
-      EntityPropertyGroup:  used to specify Properties of logical entities in the 
-                       referenced StructureRevisionView, in the context of the StructureUsage.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Transform" minOccurs="0"/>
-          <xsd:element ref="plm:Representation" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:VariantCondition" minOccurs="0"/>
-          <xsd:element name="Reference" type="plm:GDEReferenceType" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-          <xsd:element ref="plm:EntityPropertyGroup" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="instancedRef" type="plm:anyURIType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="transformRef" type="xsd:IDREF" use="optional" plm:refType="plm:Transform"/>
-        <xsd:attribute name="materialRef" type="xsd:IDREF" use="optional" plm:refType="plm:Material"/>
-        <xsd:attribute name="partRef" type="plm:anyURIType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="representationRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Representation"/>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-        <xsd:attribute name="designRequired" type="xsd:boolean" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="StructureUsage" type="plm:StructureUsageBase" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ****************************** AttributeContext ****************************** -->
-  <!-- -->
-  <xsd:complexType name="AttributeContextType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An AttributeContext element specifies the source for an overridden Occurrence 
-      attribute or property (e.g. quantity, Transform). An Occurrence attribute or 
-      property can be overridden in various ways, for example in the context of a 
-      higher-level Occurrence. The AttributeContext is not intended to describe the 
-      override mechanism - it simply indicates the context object which was responsible 
-      for the override.
-      
-      Attributes:
-      
-      attributeName:   The name of the (xml) attribute being overridden, if appropriate.
-      targetRef:       The element which carries the attribute being overridden.
-      contextRef:      The context element, for example a higher-level Occurrence.
-      changeRef:       A reference to an element representing a Change which caused this
-                       attribute to be overridden.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:attribute name="attributeName" type="xsd:string" use="optional"/>
-        <xsd:attribute name="targetRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="contextRef" type="plm:anyURIType" use="optional"/>
-        <xsd:attribute name="changeRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AttributeContext" type="plm:AttributeContextType"/>
-  <!-- -->
-  <!-- ****************************** Occurrence ****************************** -->
-  <!-- -->
-  <xsd:complexType name="OccurrenceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Occurrence. An Occurrence specifies a usage of a Structure, StructureRevision, or
-      StructureRevisionView in an Assembly. The usage is defined by specifying a chain of 
-      Instances which lead from the Assembly down to the Structure, or by a chain of 
-      Instances and other Occurrences, which when joined together define an Instance
-      chain. It is also possible for an Occurrence to reference a ProductView at the end
-      of its Instance chain, rather than a Structure.
-
-      The Assembly, which is the parent of the first Instance in the Instance chain, is
-      called the 'top Structure' of the Occurrence. The Structure, which is instanced by
-      the last Instance in the Instance chain, is called the 'bottom Structure' of the
-      Occurrence.
-
-      Note that the following inherited attributes on an Occurrence override the
-      attributes of the same name on the last Instance of the Instance chain:
-
-        materialRef
-        instancedRef
-        partRef
-        representationRefs
-
-      In addition, the 'transformRef' attribute overrides the transform
-      obtained by accumulating the transforms in the Instance chain. 
-
-      Attributes:
-
-      instanceRefs:   chain of Instances which define the Occurrence. (May end in a
-                      GDEInstanceGroup).
-      pathRefs:       chain of Instances and Occurrences which, when joined together,
-                      define an Instance chain. Only one of instanceRefs and pathRefs
-                      should be present.
-
-      geometryRefs:   optional geometry associated with this Occurrence.
-
-      occurrenceRefs: an Occurrence may have a number of 'child' Occurrences, which this 
-                      attribute specifies. A child Occurrence must have an Instance chain
-                      which is the same as that of its parent, but with one more Instance
-                      added at the bottom end. An Occurrence is normally only rendered in
-                      a view if it has no child Occurrences.
-
-      alternativeOfRef: It is possible for one ProductView to be defined by reference to
-                      another ProductView. In this case the first ProductView will
-                      contain some Occurrences which override Occurrences in the
-                      referenced ProductView. The 'alternativeOfRef' attribute is used to
-                      indicate the Occurrence which this Occurrence is overriding. If an
-                      Occurrence has an alternativeOfRef attribute, it should not also
-                      have an instanceRefs attribute, nor should it have an 
-                      occurrenceRefs attribute.
-
-      productViewRef: If an Occurrence has a productViewRef, then it is regarded as an
-                      Occurrence of that ProductView, not of its 'bottom Structure'. In
-                      this case, the 'top Structure' of the ProductView must be the same
-                      as the 'bottom Structure' of the Occurrence. 
-
-      visible:        Flag to indicate the Occurrence is visible. If absent, visible is
-                      implied. An Occurrence which references another Occurrence via the
-                      alternativeOfRef attribute may override its visibility, i.e. make
-                      it visible if invisible or vice-versa. NB This is deprecated -
-                      use a Visibility Property instead. 
-
-      lastInstanceParentRef: This is the StructureRevisionView which is the parent of the
-                      last Instance in the chain. Although this is implied by the last
-                      Instance in the chain, it can be specified explicitly with this
-                      attribute, either for convenience, or in the case where
-                      instanceRefs is absent.
-
-      sourceRef:      A reference to the InstancePath to which this corresponds (which 
-                      will have the same instance path as this Occurrence). 
-                      
-      linkedOccurrenceRef:  In a Composition ProductView, this attribute references an 
-                      Occurrence or ConfiguredOccurrenceGroup in a referenced ProductView. 
-                      It indicates that this Occurrence should be treated as an Occurrence
-                      not of an entire ProductRevisionView, but only of the specified
-                      Occurrence(s).
-                       
-      linkedGroupRef: A reference to a ConfiguredOccurrenceGroup. This corresponds to the
-                      group referenced by 'linkedOccurrenceRef', but contains Occurrences
-                      in the Composition ProductView.
-
-
-      associatedAttachmentRefs: reference to any associated attachments. These are the
-                      direct attachments of this Occurrence - any sub-attachments will be
-                      referenced by those attachments.
-
-      parentRef:      This is an optional back-pointer reference to a parent Occurrence,
-                      which references this Occurrence through its 'occurrenceRefs'
-                      attribute.
-
-      instanceNumber  A number, or index. This is only relevant when the last Instance
-                      in the path is a GDEInstance.
-                      
-      occurrenceId:   ID for the Occurrence, unique in the context of the top-level 
-                      Structure of the Occurrence.
-                      
-      controlRefs:    The OccurrenceControlRevision objects controlling this occurrence, if any
-      symbolicRefs:   the child SymbolicOccurrences
-
-      Elements: 
-
-      Material:
-      EntityMaterial: Allows the association of a Material with an entity; for example
-                      the Occurrence could specify the colour of a face of a body. The
-                      entity should be in a Representation specified by this Occurrence,
-                      or by the last Instance in the Instance chain, or by the 'bottom
-                      Structure' of the Occurrence.
-
-      AssociatedAttachment
-      
-      AttributeContext: Used to specify the source of any overridden attributes or
-                      properties of this Occurrence.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureUsageBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:Material"/>
-          <xsd:element ref="plm:EntityMaterial"/>
-          <xsd:element ref="plm:AssociatedAttachment"/>
-          <xsd:element ref="plm:AttributeContext"/>
-        </xsd:choice>
-        <xsd:attribute name="occurrenceRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Occurrence"/>
-        <xsd:attribute name="instanceRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="pathRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="geometryRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Geometry"/>
-        <xsd:attribute name="alternativeOfRef" type="plm:anyURIType" use="optional" plm:refType="plm:Occurrence"/>
-        <xsd:attribute name="productViewRef" type="plm:anyURIType" use="optional" plm:refType="plm:ProductView"/>
-        <xsd:attribute name="visible" type="xsd:boolean" use="optional" plm:deprecated="true"/>
-        <xsd:attribute name="lastInstanceParentRef" type="plm:anyURIType" use="optional" plm:refType="plm:StructureRevisionView"/>
-        <xsd:attribute name="sourceRef" type="plm:anyURIType" use="optional" plm:refType="plm:InstancePath"/>
-        <xsd:attribute name="linkedOccurrenceRef" type="plm:anyURIType" use="optional" plm:refType="plm:Managed"/>
-        <xsd:attribute name="linkedGroupRef" type="plm:anyURIType" use="optional" plm:refType="plm:ConfiguredOccurrenceGroup"/>
-        <xsd:attribute name="associatedAttachmentRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:AssociatedAttachment"/>
-        <xsd:attribute name="parentRef" type="plm:anyURIType" use="optional" plm:refType="plm:Occurrence"/>
-        <xsd:attribute name="instanceNumber" type="xsd:integer" use="optional"/>
-        <xsd:attribute name="occurrenceId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="controlRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:OccurrenceControlRevision"/>
-        <xsd:attribute name="symbolicRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:SymbolicOccurrence"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Occurrence" type="plm:OccurrenceType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ****************************** Instance ****************************** -->
-  <!-- -->
-  <xsd:complexType name="InstanceBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      A base type for instancing relations between Structure, StructureRevision, 
-      StructureView and StructureRevisionView elements. (This is not an abstract type
-      because the Instance element is retained for compatibility reasons).
-
-      Attributes:
-
-      quantity:        Quantity of the element referenced. If absent, 1 is implied. If
-                       present, any contained or referenced Transform is ignored.
-      unitRef:         Units for the quantity attribute. If absent, 'each' is implied. An
-                       IDREF to a 'Unit' element.
-      instanceType     A 'subtype' string for the instance. No specified semantics.
-      sequenceNumber   Serves to identify the instance within its parent. If
-                       present, should be unique within the parent.
-                       
-      instanceThreadRef:  A reference to the InstanceThread which this Instance is
-                          included in, if any.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureUsageBase">
-        <xsd:attribute name="quantity" type="xsd:double" use="optional"/>
-        <xsd:attribute name="unitRef" type="xsd:IDREF" use="optional" plm:refType="plm:Unit"/>
-        <xsd:attribute name="instanceType" type="xsd:string" use="optional"/>
-        <xsd:attribute name="sequenceNumber" type="xsd:nonNegativeInteger" use="optional"/>
-        <xsd:attribute name="instanceThreadRef" type="plm:anyURIType" use="optional" plm:refType="plm:InstanceThread"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Instance" type="plm:InstanceBase" substitutionGroup="plm:StructureUsage"/>
-  <!-- -->
-  <!-- ********************* ProductInstance ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ProductInstanceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An Instance between Product, ProductRevision, or ProductRevisionView elements.
-      
-      Attributes:
-      
-      substituteForRef:  A ProductInstance may be a 'substitute' for another, which means
-                       that it may be used instead, but only in the context of their
-                       common parent assembly. If this is a substitute for another
-                       ProductInstance, then this attribute references it.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:InstanceBase">
-        <xsd:attribute name="substituteForRef" type="plm:anyURIType" use="optional" plm:refType="plm:ProductInstance"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductInstance" type="plm:ProductInstanceType" substitutionGroup="plm:Instance"/>
-  <!-- -->
-  <!-- ********************* CompositionInstance ****************************** -->
-  <!-- -->
-  <xsd:complexType name="CompositionInstanceType" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a base type for sub-types of Instance which need to reference 
-      an Occurrence.
-      
-      Attributes:
-      
-      occurrenceRef:   the referenced Occurrence. No specific semantics at this level.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:InstanceBase">
-        <xsd:attribute name="occurrenceRef" type="plm:anyURIType" use="optional" plm:refType="plm:Occurrence"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CompositionInstance" type="plm:CompositionInstanceType" substitutionGroup="plm:Instance"/>
-  <!-- -->
-  <!-- ********************* GDEInstance ****************************** -->
-  <!-- -->
-  <xsd:complexType name="GDEInstanceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An Instance of a GDE.
-      
-      Attributes:
-      
-      instanceNumber   A number, or index, which identifies the GDEInstance
-                       within its parent.
-      
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:InstanceBase">
-        <xsd:attribute name="instanceNumber" type="xsd:integer" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GDEInstance" type="plm:GDEInstanceType" substitutionGroup="plm:Instance"/>
-  <!-- -->
-  <!-- ************************ GDEInstanceGroupType ************************* -->
-  <!-- -->
-  <xsd:complexType name="GDEInstanceGroupType">
-    <xsd:annotation>
-      <xsd:documentation>
-      GDEInstanceGroup: derived from Managed.
-
-      This global element is used to collect together a number of
-      GDEInstance elements to simplify referencing.
-
-      Attributes:
-
-      propertyRefs     Reference to Properties.
-
-      Elements:
-      
-      GDEInstance      Any number of GDEInstances.
-      PropertyGroup    A group of Properties applicable to all GDEInstances
-                       in the GDEInstanceGroup.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:GDEInstance" minOccurs="0" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GDEInstanceGroup" type="plm:GDEInstanceGroupType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ********************* ConnectionInstance ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ConnectionInstanceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An Instance of a Connection, ConnectionRevision, or ConnectionRevisionView.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:InstanceBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConnectionInstance" type="plm:ConnectionInstanceType" substitutionGroup="plm:Instance"/>
-  <!-- -->
-  <!-- ************************* ConfigurationContext ******************* -->
-  <!-- -->
-  <xsd:complexType name="ConfigurationContextType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element acts as a context for effectivities. An Effectivity can reference a
-      ConfigurationContext element to indicate that the Effectivity is only applicable
-      to that ConfigurationContext. 
-      
-      Attributes:
-       
-      configId:   Unique identifier.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:attribute name="configId" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ConfigurationContext" type="plm:ConfigurationContextType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ********************* Effectivity ****************************** -->
-  <!-- -->
-  <xsd:complexType name="EffectivityType" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Effectivity Base class.
-      
-      contextRef: the Structure, StructureRevision, or ConfigurationContext in which this 
-                  Effectivity applies. If absent, then the Effectivity is relevant for
-                  all Products and ProductRevisions which use the element to which the 
-                  Effectivity is attached.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="contextRef" type="plm:anyURIType" use="optional" plm:refType="plm:Managed"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Effectivity" type="plm:EffectivityType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- *********************** Date Effectivity ****************************** -->
-  <!-- -->
-  <xsd:simpleType name="EffectivityEndConditionType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="stockOut"/>
-      <xsd:enumeration value="openEnded"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="DateEffectivityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Date Effectivity. Indicates that an element is effective between two specified
-      dates. If the start is omitted, the effectivity is openEnded in that direction.
-      If the end is omitted, the effectivity is openEnded, or stockOut, in that
-      direction.
-
-      Attributes:
-     
-      start:         Start date and time.
-      end:           End date and time.
-      endCondition:  If the end dateTime is omitted, this attribute specifies
-                     whether the effectivity is stockOut or openEnded. OpenEnded means
-                     effective indefinitely after the start date; stockOut means only
-                     effective 'while stocks last'. 
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EffectivityType">
-        <xsd:attribute name="start" type="xsd:dateTime" use="optional"/>
-        <xsd:attribute name="end" type="xsd:dateTime" use="optional"/>
-        <xsd:attribute name="endCondition" type="plm:EffectivityEndConditionType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DateEffectivity" type="plm:DateEffectivityType" substitutionGroup="plm:Effectivity"/>
-  <!-- -->
-  <!-- *********************** Lot Effectivity ******************************* -->
-  <!-- -->
-  <xsd:complexType name="LotEffectivityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Lot Effectivity. Indicates that an element is effective only for a certain 'lot' or
-      batch.
-
-      Attributes:
-     
-      lot:        Lot identifier.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EffectivityType">
-        <xsd:attribute name="lot" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="LotEffectivity" type="plm:LotEffectivityType" substitutionGroup="plm:Effectivity"/>
-  <!-- -->
-  <!-- *********************** SerialNumber Effectivity ********************** -->
-  <!-- -->
-  <xsd:complexType name="SerialNumberEffectivityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Serial Number Effectivity. Indicates that an element is effective for a range of
-      serial numbers. If the start is omitted, the effectivity is openEnded in that 
-      direction. If the end is omitted, the effectivity is openEnded, or stockOut, 
-      in that direction.
-
-      Attributes:
-     
-      start:         Start serial number.
-      end:           End serial number.
-      endCondition:  If the end serial number is omitted, this attribute specifies
-                     whether the effectivity is stockOut or openEnded. OpenEnded means
-                     effective indefinitely after the start serialNumber; stockOut means
-                     only effective 'while stocks last'.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:EffectivityType">
-        <xsd:attribute name="start" type="xsd:string" use="optional"/>
-        <xsd:attribute name="end" type="xsd:string" use="optional"/>
-        <xsd:attribute name="endCondition" type="plm:EffectivityEndConditionType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SerialNumberEffectivity" type="plm:SerialNumberEffectivityType" substitutionGroup="plm:Effectivity"/>
-  <!-- -->
-  <!-- ********************* Option ************************************************ -->
-  <!-- -->
-  <xsd:simpleType name="OptionScopeType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="public"/>
-      <xsd:enumeration value="private"/>
-      <xsd:enumeration value="legacy"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="OptionTypesType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="string"/>
-      <xsd:enumeration value="int"/>
-      <xsd:enumeration value="real"/>
-      <xsd:enumeration value="logical"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="OptionValueType">
-    <xsd:attribute name="v" type="xsd:string"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="OptionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Option. This element specifies the valid values for an Option, either as a set of
-      allowed values (i.e. an enum), or as a range of values of a particular type.
-
-      Attributes:
-
-      scope:         Option scope.
-      type:          Option type - enum, string, int, real or logical.
-
-      Elements:
-
-      Value:         If the Option is of type enum, it should contain a sequence of Value
-                     sub-elements giving the allowed values.
-
-      GreaterThan:        ) If the Option type is not enum, then its allowed values are                   
-      GreaterThanOrEqual: ) given by a range, which is specified by a GreaterThan or 
-      LessThan:           ) GreaterThanOrEqual element, followed by a LessThan or
-      LessThanOrEqual:    ) LessThanOrEqual element. These are all of type 
-                            OptionValueType.
-
-      Default:       Following these elements there may be a Default element giving a
-                     default value for the Option.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:choice>
-            <xsd:choice maxOccurs="unbounded">
-              <xsd:element name="Value" type="plm:OptionValueType"/>
-            </xsd:choice>
-            <xsd:sequence>
-              <xsd:choice>
-                <xsd:element name="GreaterThan" type="plm:OptionValueType"/>
-                <xsd:element name="GreaterThanOrEqual" type="plm:OptionValueType"/>
-              </xsd:choice>
-              <xsd:choice>
-                <xsd:element name="LessThan" type="plm:OptionValueType"/>
-                <xsd:element name="LessThanOrEqual" type="plm:OptionValueType"/>
-              </xsd:choice>
-            </xsd:sequence>
-          </xsd:choice>
-          <xsd:element name="Default" type="plm:OptionValueType" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="scope" type="plm:OptionScopeType" use="optional"/>
-        <xsd:attribute name="type" type="plm:OptionTypesType" default="enum"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Option" type="plm:OptionType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ********************* Operand *************************************** -->
-  <!-- -->
-  <xsd:complexType name="OperandBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Operand - abstract base class for Operands (arguments of operators).
-      </xsd:documentation>
-    </xsd:annotation>
-  </xsd:complexType>
-  <xsd:element name="Operand" type="plm:OperandBase"/>
-  <!-- -->
-  <!-- ********************* Statement ************************************* -->
-  <!-- -->
-  <xsd:complexType name="StatementBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Statement - abstract base class for statements.
-      </xsd:documentation>
-    </xsd:annotation>
-  </xsd:complexType>
-  <xsd:element name="Statement" type="plm:StatementBase"/>
-  <!-- -->
-  <!-- ********************* StatementListType ****************************** -->
-  <!-- -->
-  <xsd:complexType name="StatementListType">
-    <xsd:annotation>
-      <xsd:documentation>
-      StatementList - a list of statements.
-
-      Elements:
-
-      Contains a non-empty sequence of elements derived from Statement.      
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice maxOccurs="unbounded">
-      <xsd:element ref="plm:Statement"/>
-    </xsd:choice>
-  </xsd:complexType>
-  <!-- -->
-  <!-- ********************* Expression ************************************ -->
-  <!-- -->
-  <xsd:complexType name="ExpressionBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Expression - abstract base class for Expressions.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OperandBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Expression" type="plm:ExpressionBase" substitutionGroup="plm:Operand"/>
-  <!-- -->
-  <!-- ********************* LogicalExpression ****************************** -->
-  <!-- -->
-  <xsd:complexType name="LogicalExpressionBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      LogicalExpression - abstract base class for expressions returning a logical result.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ExpressionBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="LogicalExpression" type="plm:LogicalExpressionBase" substitutionGroup="plm:Expression"/>
-  <!-- -->
-  <!-- ********************* And ********************************************* -->
-  <!-- -->
-  <xsd:complexType name="AndType">
-    <xsd:annotation>
-      <xsd:documentation>
-      And - a type of logical expression.
-
-      Elements:
-
-      At least two sub-elements, derived from LogicalExpression. The And expression
-      returns true if all its sub-elements return true.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LogicalExpressionBase">
-        <xsd:choice minOccurs="2" maxOccurs="unbounded">
-          <xsd:element ref="plm:LogicalExpression"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="And" type="plm:AndType" substitutionGroup="plm:LogicalExpression"/>
-  <!-- -->
-  <!-- ********************* Or ********************************************** -->
-  <!-- -->
-  <xsd:complexType name="OrType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Or - a type of logical expression.
-
-      Elements:
-
-      At least two sub-elements, derived from LogicalExpression. The Or expression
-      returns true if any of its sub-elements return true.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LogicalExpressionBase">
-        <xsd:choice minOccurs="2" maxOccurs="unbounded">
-          <xsd:element ref="plm:LogicalExpression"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Or" type="plm:OrType" substitutionGroup="plm:LogicalExpression"/>
-  <!-- -->
-  <!-- ********************* Not ******************************************** -->
-  <!-- -->
-  <xsd:complexType name="NotType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Not - a type of logical expression.
-
-      Elements:
-
-      One sub-element, derived from LogicalExpression. The Not expression returns 
-      true if its sub-element returns false.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LogicalExpressionBase">
-        <xsd:choice>
-          <xsd:element ref="plm:LogicalExpression"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Not" type="plm:NotType" substitutionGroup="plm:LogicalExpression"/>
-  <!-- -->
-  <!-- ********************* OptionIs **************************************** -->
-  <!-- -->
-  <xsd:simpleType name="LogicalOperationType">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="eq"/>
-      <xsd:enumeration value="ne"/>
-      <xsd:enumeration value="gt"/>
-      <xsd:enumeration value="ge"/>
-      <xsd:enumeration value="lt"/>
-      <xsd:enumeration value="le"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="OptionIsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      OptionIs - a logical expression which returns true if a given Option has a
-      particular relation to a given value (default equality relation).
-      
-      Attributes:
-
-      optionRef:   Reference to the Option.
-      value:       Specified value for the Option.
-      operation:   The operation. For example if operation is "gt", then OptionIs
-                   returns true if the option is greater than 'value'.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LogicalExpressionBase">
-        <xsd:attribute name="optionRef" type="plm:anyURIType" use="required" plm:refType="plm:Option"/>
-        <xsd:attribute name="value" type="xsd:string" use="required"/>
-        <xsd:attribute name="operation" type="plm:LogicalOperationType" default="eq"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="OptionIs" type="plm:OptionIsType" substitutionGroup="plm:LogicalExpression"/>
-  <!-- -->
-  <!-- ************************ PathIs **************************************** -->
-  <!-- -->
-  <!-- -->
-  <xsd:complexType name="PathIsType">
-    <xsd:annotation>
-      <xsd:documentation>
-      PathIs - a logical expression that returns true if the path matches that of the 
-      'instanceRefs' attribute. The path is defined as that of the chain of Instances 
-      through an Assembly that end on and include the owning Instance.
-      
-      Attributes:
-
-      instanceRefs:   chain of Instances that define a path through a hierarchical
-                      assembly structure.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:LogicalExpressionBase">
-        <xsd:attribute name="instanceRefs" type="plm:uriReferenceListType" use="required" plm:refType="plm:Instance"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PathIs" type="plm:PathIsType" substitutionGroup="plm:LogicalExpression"/>
-  <!-- ************************ Set **************************************** -->
-  <!-- -->
-  <xsd:complexType name="SetType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Set. A Statement which sets an Option to a particular value.
-
-      Attributes:
-
-      optionRef:   Reference to the Option.
-      value:       Specified value for the Option.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatementBase">
-        <xsd:attribute name="optionRef" type="plm:anyURIType" use="required" plm:refType="plm:Option"/>
-        <xsd:attribute name="value" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Set" type="plm:SetType" substitutionGroup="plm:Statement"/>
-  <!-- -->
-  <!-- ************************ SetDefault *********************************** -->
-  <!-- -->
-  <xsd:complexType name="SetDefaultType">
-    <xsd:annotation>
-      <xsd:documentation>
-      SetDefault. A Statement which sets an Option to a particular value, if it
-      is unset. Unlike the Set Statement, it will not override an existing value.
-
-      Attributes:
-
-      optionRef:   Reference to the Option.
-      value:       Specified value for the Option.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatementBase">
-        <xsd:attribute name="optionRef" type="plm:anyURIType" use="required" plm:refType="plm:Option"/>
-        <xsd:attribute name="value" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SetDefault" type="plm:SetDefaultType" substitutionGroup="plm:Statement"/>
-  <!-- -->
-  <!-- ************************ Fix ****************************************** -->
-  <!-- -->
-  <xsd:complexType name="FixType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Fix. A Statement which sets an Option to a particular value, and fixes it.
-      Subsequent Set, SetDefault, or Fix Statements are not allowed to modify it.
-
-      Attributes:
-
-      optionRef:   Reference to the Option.
-      value:       Specified value for the Option.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatementBase">
-        <xsd:attribute name="optionRef" type="plm:anyURIType" use="required" plm:refType="plm:Option"/>
-        <xsd:attribute name="value" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Fix" type="plm:FixType" substitutionGroup="plm:Statement"/>
-  <!-- -->
-  <!-- ************************ Derived ****************************************** -->
-  <!-- -->
-  <xsd:complexType name="DerivedType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Derived. A Statement which shows that the particular Option value has been 
-      derived from other options and given for information only.
-      
-      Attributes:
-
-      optionRef:   Reference to the Option.
-      value:       Value for the Option.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatementBase">
-        <xsd:attribute name="optionRef" type="plm:anyURIType" use="required" plm:refType="plm:Option"/>
-        <xsd:attribute name="value" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Derived" type="plm:DerivedType" substitutionGroup="plm:Statement"/>
-  <!-- -->
-  <!-- ********************* Message **************************************** -->
-  <!-- -->
-  <xsd:complexType name="MessageBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      Message - abstract base class for Message Statements.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatementBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Message" type="plm:MessageBase" substitutionGroup="plm:Statement"/>
-  <!-- -->
-  <!-- ********************* CheckMessage ************************************* -->
-  <!-- -->
-  <xsd:complexType name="CheckMessageType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Check Message. This is used in VariantRuleChecks.
-
-      Attributes:
-
-      message:     String message to output.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:MessageBase">
-        <xsd:attribute name="message" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CheckMessage" type="plm:CheckMessageType" substitutionGroup="plm:Message"/>
-  <!-- -->
-  <!-- ********************* InformMessage **************************************** -->
-  <!-- -->
-  <xsd:complexType name="InformMessageType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Inform Message. Outputs an informative message.
-
-      Attributes:
-
-      message:     String message to output.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:MessageBase">
-        <xsd:attribute name="message" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="InformMessage" type="plm:InformMessageType" substitutionGroup="plm:Message"/>
-  <!-- -->
-  <!-- ********************* WarnMessage ******************************************* -->
-  <!-- -->
-  <xsd:complexType name="WarnMessageType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Warn Message. Outputs a warning message.
-
-      Attributes:
-
-      message:     String message to output.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:MessageBase">
-        <xsd:attribute name="message" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="WarnMessage" type="plm:WarnMessageType" substitutionGroup="plm:Message"/>
-  <!-- -->
-  <!-- ********************* ErrorMessage ******************************************* -->
-  <!-- -->
-  <xsd:complexType name="ErrorMessageType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Error Message. Outputs an error message.
-
-      Attributes:
-
-      message:     String message to output.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:MessageBase">
-        <xsd:attribute name="message" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ErrorMessage" type="plm:ErrorMessageType" substitutionGroup="plm:Message"/>
-  <!-- -->
-  <!-- ********************* ConditionalStatement ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ConditionalStatementType">
-    <xsd:annotation>
-      <xsd:documentation>
-      ConditionalStatement. This is an If ... Then ... Else ... Statement.
-
-      Elements:
-
-      First, an element derived from LogicalExpression.
-
-      Then:         StatementList element, executed if the LogicalExpression returns
-                    true.
-      Else:         Optional StatementList element, executed if the LogicalExpression
-                    returns false.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatementBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:LogicalExpression"/>
-          <xsd:element name="Then" type="plm:StatementListType"/>
-          <xsd:element name="Else" type="plm:StatementListType" minOccurs="0"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="If" type="plm:ConditionalStatementType" substitutionGroup="plm:Statement"/>
-  <!-- -->
-  <!-- ********************* VariantRule ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VariantRuleType">
-    <xsd:annotation>
-      <xsd:documentation>
-      VariantRule. This specifies a configuration by giving specified values for
-      a set of Options.
-      
-      Attributes:
-      
-      configuredRef: The StructureRevision this VariantRule is associated with, if any.
-      
-      Elements:
-
-      A non-empty sequence of Set, Fix and Derived Statements, which specify values for a set of
-      Options.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ConfigRuleBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Set" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:Fix" maxOccurs="unbounded"/>
-          <xsd:element ref="plm:Derived" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="configuredRef" type="plm:anyURIType" use="optional" plm:refType="plm:StructureRevision"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="VariantRule" type="plm:VariantRuleType" substitutionGroup="plm:ConfigRule"/>
-  <!-- -->
-  <!-- ********************* VariantRuleCheck ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VariantRuleCheckType">
-    <xsd:annotation>
-      <xsd:documentation>
-      VariantRuleCheck. This outputs a Check Message if a condition is true.
-      
-      Elements:
-
-      An element derived from LogicalExpression.
-      A Check element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:LogicalExpression"/>
-          <xsd:element ref="plm:CheckMessage"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="VariantRuleCheck" type="plm:VariantRuleCheckType"/>
-  <!-- -->
-  <!-- ********************* VariantDefault ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VariantDefaultBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      VariantDefault. An abstract base class for Variant Defaults.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="VariantDefault" type="plm:VariantDefaultBase"/>
-  <!-- -->
-  <!-- ********************* VariantDefaultFixed ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VariantDefaultFixedType">
-    <xsd:annotation>
-      <xsd:documentation>
-      VariantDefaultFixed. This is a collection of 'SetDefault' Statements.
-
-      Elements:
- 
-      A non-empty sequence of SetDefault Statements, which set the values of some
-      Options, if they are not already set.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:VariantDefaultBase">
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element ref="plm:SetDefault"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="VariantDefaultFixed" type="plm:VariantDefaultFixedType" substitutionGroup="plm:VariantDefault"/>
-  <!-- -->
-  <!-- ********************* VariantDefaultDerived ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VariantDefaultDerivedType">
-    <xsd:annotation>
-      <xsd:documentation>
-      VariantDefaultDerived. A set of SetDefault Statements which depend on a 
-      LogicalExpression.
-
-      Elements:
-
-      An element derived from LogicalExpression.
-      A non-empty sequence of SetDefault Statements, which are executed if the
-          expression returns true.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:VariantDefaultBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:LogicalExpression"/>
-          <xsd:element ref="plm:SetDefault" maxOccurs="unbounded"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="VariantDefaultDerived" type="plm:VariantDefaultDerivedType" substitutionGroup="plm:VariantDefault"/>
-  <!-- -->
-  <!-- ********************* VariantCondition ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VariantConditionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      VariantCondition. This contains a logical expression which determines whether
-      the Instance it is attached to is 'loaded', i.e. appears in the configuration.
-
-      Elements:
-
-      A single element derived from LogicalExpression.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:LogicalExpression"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="VariantCondition" type="plm:VariantConditionType"/>
-  <!-- -->
-  <!-- ***************************** Unit ****************************** -->
-  <!-- -->
-  <xsd:simpleType name="UnitPrefixType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enum for SI unit prefixes, ranging from yotta (10**24) to yocto (10**-24)
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="yotta"/>
-      <xsd:enumeration value="zetta"/>
-      <xsd:enumeration value="exa"/>
-      <xsd:enumeration value="peta"/>
-      <xsd:enumeration value="tera"/>
-      <xsd:enumeration value="giga"/>
-      <xsd:enumeration value="mega"/>
-      <xsd:enumeration value="kilo"/>
-      <xsd:enumeration value="hecto"/>
-      <xsd:enumeration value="deka"/>
-      <xsd:enumeration value="deci"/>
-      <xsd:enumeration value="centi"/>
-      <xsd:enumeration value="milli"/>
-      <xsd:enumeration value="micro"/>
-      <xsd:enumeration value="nano"/>
-      <xsd:enumeration value="pico"/>
-      <xsd:enumeration value="femto"/>
-      <xsd:enumeration value="atto"/>
-      <xsd:enumeration value="zepto"/>
-      <xsd:enumeration value="yocto"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="UnitComponentType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Component of a standard SI unit of measurement
-
-      Attributes:
-      
-      prefix:      multiplier prefix, e.g. "kilo", "micro"
-      exponent:    power to which unit is raised, e.g. seconds**-2
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="exponent" type="xsd:double" default="1"/>
-    <xsd:attribute name="prefix" type="plm:UnitPrefixType" use="optional"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="GeneralUnitComponentType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Component of a unit of measurement, other than a standard SI unit.
-      
-      The name of the unit can be any string, to allow for the numerous units
-      in use. However the following strings should be used for the corresponding 
-      common units:
-      
-      SI units (other than those given explicitly in the Unit element):
-
-      "gram", "hertz", "newton", "pascal", "joule", "watt", "coulomb",
-      "volt", "farad", "ohm", "siemens", "weber", "tesla", "henry", 
-      "degreeCelsius", "lumen", "lux", "becquerel", "gray", "sievert".
-
-      "are", "hectare", "litre" (note European spelling).
-
-      Common non-SI units:
-      
-      "minute", "hour", "day".
-      
-      "inch", "foot", "yard", "mile", "nautical mile".
-      "acre".
-      
-      "pint", "quart", "gallon", 
-      "imperial pint", "imperial quart", "imperial gallon".
-
-      "ounce", "pound".
-
-      Attributes:
-      
-      name:        name of unit, e.g. "inch"
-      prefix:      multiplier prefix, e.g. "kilo", "micro"
-      exponent:    power to which unit is raised, e.g. cm**-2
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="name" type="xsd:string" use="required"/>
-    <xsd:attribute name="exponent" type="xsd:double" default="1"/>
-    <xsd:attribute name="prefix" type="plm:UnitPrefixType" use="optional"/>
-  </xsd:complexType>
-  <!-- -->
-  <xsd:complexType name="UnitType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Unit - a unit of measurement, e.g. gallons, or kilogram/metre**2.
-
-      This defines the unit as a combination of powers of other units.
-      The standard SI units are represented explicitly, other units are 
-      given by a named element.
-
-      Elements:
-
-      Metre:         a UnitComponent element giving the length exponent.
-      ...etc...
-      
-      GeneralUnit:   powers of specified units.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="Metre" type="plm:UnitComponentType"/>
-          <xsd:element name="Kilogram" type="plm:UnitComponentType"/>
-          <xsd:element name="Second" type="plm:UnitComponentType"/>
-          <xsd:element name="Ampere" type="plm:UnitComponentType"/>
-          <xsd:element name="Mole" type="plm:UnitComponentType"/>
-          <xsd:element name="Candela" type="plm:UnitComponentType"/>
-          <xsd:element name="Kelvin" type="plm:UnitComponentType"/>
-          <xsd:element name="GeneralUnit" type="plm:GeneralUnitComponentType"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Unit" type="plm:UnitType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- *************************** Owner ****************************** -->
-  <!-- -->
-  <xsd:complexType name="OwnerBase">
-    <xsd:annotation>
-      <xsd:documentation>
-      Base class for entities which can 'own' objects (people, organisations, users, 
-      sites, etc).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Owner" type="plm:OwnerBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************ Person ***************************************** -->
-  <!-- -->
-  <xsd:complexType name="PersonType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An individual Person.
-
-      Attributes:
-
-      firstName:    first name.
-      middleNames:  middle names and/or initials.
-      lastName:     last (family) name.
-      userId:       user Id.
-      addressRef:   optional reference to an Address element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OwnerBase">
-        <xsd:attribute name="firstName" type="xsd:string" use="optional"/>
-        <xsd:attribute name="middleNames" type="xsd:string" use="optional"/>
-        <xsd:attribute name="lastName" type="xsd:string" use="optional"/>
-        <xsd:attribute name="userId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="addressRef" type="plm:anyURIType" use="optional" plm:refType="plm:Address"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Person" type="plm:PersonType" substitutionGroup="plm:Owner"/>
-  <!-- -->
-  <!-- ************************ DisciplineRelation  **************************** -->
-  <!-- -->
-  <xsd:complexType name="DisciplineRelationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Enables a User to be associated with a Discipline, at a particular level
-      
-      Attributes:
-      
-      disciplineRef:    reference to a Discipline
-      level:            name of the relevant Level
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:attribute name="disciplineRef" type="plm:anyURIType" use="optional" plm:refType="plm:Discipline"/>
-        <xsd:attribute name="level" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DisciplineRelation" type="plm:DisciplineRelationType"/>
-  <!-- -->
-  <!-- ************************ User ***************************************** -->
-  <!-- -->
-  <xsd:complexType name="UserType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A User, i.e. a user account on a computer system.
-
-      Attributes:
-
-      userId:        User Id.
-      personRef:     optional reference to a Person element.
-      
-      Elements:
-      
-      DisciplineRelation: used to associate a User with a Discipline.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OwnerBase">
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="DisciplineRelation" type="plm:DisciplineRelationType"/>
-        </xsd:choice>
-        <xsd:attribute name="userId" type="xsd:string" use="required"/>
-        <xsd:attribute name="personRef" type="plm:anyURIType" use="optional" plm:refType="plm:Person"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="User" type="plm:UserType" substitutionGroup="plm:Owner"/>
-  <!-- -->
-  <!-- ************************ Organisation  *********************************** -->
-  <!-- -->
-  <xsd:complexType name="OrganisationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An organisation, i.e. a group of people or users. Organisations are hierarchical.
-      People/Users are associated with organisations by means of an OrganisationMember 
-      element, which also specifies a Role.
-
-      Attributes:
-
-      (name:            Name, inherited from DescriptionBase)
-      address:          Optional reference to Address.
-      organisationRefs: Reference to sub-organisations.
-      cageCode:         CAGE code (5 characters). This is a US government company code.
-      disciplineRefs:   Disciplines associated with this Organisation. There is no
-                        implication that Users in this Organisation belong to these
-                        Disciplines.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OwnerBase">
-        <xsd:attribute name="organisationRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Organisation"/>
-        <xsd:attribute name="addressRef" type="plm:anyURIType" use="optional" plm:refType="plm:Person"/>
-        <xsd:attribute name="cageCode" type="xsd:string" use="optional"/>
-        <xsd:attribute name="disciplineRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Discipline"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Organisation" type="plm:OrganisationType" substitutionGroup="plm:Owner"/>
-  <!-- -->
-  <!-- ************************ Role ************************************ -->
-  <!-- -->
-  <xsd:complexType name="RoleType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A Role, e.g. "Designer", "Test Engineer", "Chairman", which a Person 
-      plays in an organisation.
-
-      Attributes:
-
-      (name:         The name of the role, i.e. "Designer". Inherited from DescriptionBase)
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Role" type="plm:RoleType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************ OrganisationMember *********************** -->
-  <!-- -->
-  <xsd:complexType name="OrganisationMemberType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element is used to associate a Person/User with an Organisation, and to 
-      assign an optional Role to that Person/User within that Organisation. A person
-      may have more than one Role in an Organisation.
-      
-      Attributes:
-
-      memberRef:        Reference to a Person or User.
-      organisationRef:  The Organisation.
-      roleRef:          The Role.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OwnerBase">
-        <xsd:attribute name="memberRef" type="plm:anyURIType" use="required" plm:refType="plm:Owner"/>
-        <xsd:attribute name="organisationRef" type="plm:anyURIType" use="required" plm:refType="plm:Organisation"/>
-        <xsd:attribute name="roleRef" type="plm:anyURIType" use="optional" plm:refType="plm:Role"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="OrganisationMember" type="plm:OrganisationMemberType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************ ResourcePool **************************** -->
-  <!-- -->
-  <xsd:complexType name="ResourcePoolType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a class of people/users within an organisation, e.g. all people in 
-      Company A with role 'programmer'. As such it references an organisation and 
-      a role. It can be used as a resource without specifying a particular person.
-
-      Attributes:
-
-      organisationRef:  The Organisation.
-      roleRef:          The Role.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="organisationRef" type="plm:anyURIType" use="optional" plm:refType="plm:Organisation"/>
-        <xsd:attribute name="roleRef" type="plm:anyURIType" use="optional" plm:refType="plm:Role"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ResourcePool" type="plm:ResourcePoolType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************ Address *********************** -->
-  <!-- -->
-  <xsd:complexType name="AddressType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An address for a Person or Organisation.
-
-      Attributes:
-
-      internalLocation:   Room, mailbox, etc.
-      streetNumber:
-      street:             Name of street, road, lane, etc.
-      town:               Village, Town, City, etc.
-      region:             Region, County, State, etc.
-      country:            Country.
-      postalCode:         PostCode, ZIP, etc.
-      emailAddress:
-      telephone:
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="internalLocation" type="xsd:string" use="optional"/>
-        <xsd:attribute name="streetNumber" type="xsd:string" use="optional"/>
-        <xsd:attribute name="street" type="xsd:string" use="optional"/>
-        <xsd:attribute name="town" type="xsd:string" use="optional"/>
-        <xsd:attribute name="region" type="xsd:string" use="optional"/>
-        <xsd:attribute name="postalCode" type="xsd:string" use="optional"/>
-        <xsd:attribute name="country" type="xsd:string" use="optional"/>
-        <xsd:attribute name="emailAddress" type="xsd:string" use="optional"/>
-        <xsd:attribute name="telephone" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Address" type="plm:AddressType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************ Site  *********************************** -->
-  <!-- -->
-  <xsd:complexType name="SiteType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A Site in the sense of a particular software installation, database,
-      or location.
-      
-      Attributes:
-      
-      (name:          Name of the Site, inherited from DescriptionBase)
-      siteId:         Identifying Id of the Site
-      addressRef:     Reference to Address element.
-      ownerRef:       Reference to owning Organisation.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OwnerBase">
-        <xsd:attribute name="siteId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="addressRef" type="plm:anyURIType" use="optional" plm:refType="plm:Address"/>
-        <xsd:attribute name="ownerRef" type="plm:anyURIType" use="optional" plm:refType="plm:Organisation"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Site" type="plm:SiteType" substitutionGroup="plm:Owner"/>
-  <!-- -->
-  <!-- ************************ DisciplineLevel  ******************************* -->
-  <!-- -->
-  <xsd:complexType name="DisciplineLevelType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A level of expertise in a Discipline
-      
-      Attributes:
-      
-      name:             The name of the Level, e.g. "expert" 
-      number:           A number associated with the Level. Higher numbers imply
-                        greater expertise.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:IdBase">
-        <xsd:attribute name="name" type="xsd:string" use="optional"/>
-        <xsd:attribute name="number" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DisciplineLevel" type="plm:DisciplineLevelType"/>
-  <!-- -->
-  <!-- ************************ Discipline  *********************************** -->
-  <!-- -->
-  <xsd:complexType name="DisciplineType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A Discipline which Users may belong to.
-      
-      Attributes:
-
-      rate:             The default pay rate for this Discipline. The units are
-                        unspecified.
-                        
-      Elements:
-      
-      Level:            Levels of expertise of the Discipline
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="Level" type="plm:DisciplineLevelType"/>
-        </xsd:choice>
-        <xsd:attribute name="rate" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Discipline" type="plm:DisciplineType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- *********************** Access Control **************************** -->
-  <!-- -->
-  <xsd:simpleType name="AccessIntentEnum">
-    <xsd:annotation>
-      <xsd:documentation>
-      Simple Access Control enum.
-
-      reference:  read-only
-      modifiable: read-write
-      noAccess:   may not be accessed at all.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="reference"/>
-      <xsd:enumeration value="modifiable"/>
-      <xsd:enumeration value="noAccess"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="AccessIntentType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Simple access control element. Specifies a set of owners, and read/write access.
-      
-      Attributes:
- 
-      intent:      reference, modifiable or noAccess.
-      ownerRefs    Reference to one or more owners. These should be elements 
-                   derived from plm:OwnerBase, e.g. Person, Organisation, Site, etc.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AccessControlBase">
-        <xsd:attribute name="ownerRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Owner"/>
-        <xsd:attribute name="intent" type="plm:AccessIntentEnum" default="modifiable"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AccessIntent" type="plm:AccessIntentType" substitutionGroup="plm:AccessControl"/>
-  <!-- -->
-  <!-- *********************** StatusInfo ******************************** -->
-  <!-- -->
-  <xsd:complexType name="StatusInfoType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Simple status information.
-      
-      Attributes:
-      
-      dateCreated:       Date and time created.  
-      dateModified:      Date and time last modified.
-      lastModifiedBy:    Person or User who last modified this element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StatusBase">
-        <xsd:attribute name="dateCreated" type="xsd:dateTime" use="optional"/>
-        <xsd:attribute name="dateModified" type="xsd:dateTime" use="optional"/>
-        <xsd:attribute name="lastModifiedBy" type="plm:anyURIType" use="optional" plm:refType="plm:Owner">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="StatusInfo" type="plm:StatusInfoType" substitutionGroup="plm:Status"/>
-  <!-- -->
-  <!-- *********************** Checkout ******************************** -->
-  <!-- -->
-  <xsd:complexType name="CheckoutType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Checkout information.
-      
-      Attributes:
-      
-      by:           Person etc. holding the checkout. Derived from OwnerBase.
-      date:         Date and time checked out.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:CheckoutStatusBase">
-        <xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
-        <xsd:attribute name="by" type="plm:anyURIType" use="optional">
-          <xsd:annotation>
-            <xsd:appinfo source="http://www.plmxml.org/tools/CodeGenerator">validate=skipName</xsd:appinfo>
-          </xsd:annotation>
-        </xsd:attribute>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Checkout" type="plm:CheckoutType" substitutionGroup="plm:CheckoutStatus"/>
-  <!-- -->
-  <!-- ************************* Associated Files/Datasets ********************** -->
-  <!-- -->
-  <xsd:complexType name="AssociatedDataSetType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Attribute used to associate a DataSet with a PLM XML element.
-
-      Attributes:
-      
-      dataSetRef: uri reference to DataSet
-      role:       role/purpose of DataSet. No specified values.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttributeBase">
-        <xsd:attribute name="dataSetRef" type="plm:anyURIType" use="required" plm:refType="plm:DataSet"/>
-        <xsd:attribute name="role" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AssociatedDataSet" type="plm:AssociatedDataSetType" substitutionGroup="plm:Attribute"/>
-  <!-- -->
-  <xsd:complexType name="ExternalFileType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Represents an external file.
-
-      Attributes:
-      
-      locationRef: uri of the file
-      format:      format of the file. This should determine which applications
-                   can read the file. There is no fixed set of values for this, but
-                   will often correspond to the file extension, e.g. "doc", "txt".
-                   If the format is the same as a Representation format, e.g. "JT",
-                   then the same format string should be used.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:attribute name="locationRef" type="plm:anyURIType" use="required"/>
-        <xsd:attribute name="format" type="xsd:string" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ExternalFile" type="plm:ExternalFileType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <xsd:complexType name="DataSetType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Represents a DataSet (collection of files).
-
-      Attributes:
-      
-      (name:       name of the DataSet; inherited from AttribOwnerBase)
-      version:     version number.
-      type:        type of DataSet. No specified values.
-      memberRefs:  uri references to the members of the DataSet. These should be
-                   plm:ExternalFile elements.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:attribute name="version" type="xsd:nonNegativeInteger" use="optional"/>
-        <xsd:attribute name="type" type="xsd:string" use="optional"/>
-        <xsd:attribute name="memberRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:ExternalFile"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DataSet" type="plm:DataSetType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ********************* ReleaseStatus ******************************* -->
-  <!-- -->
-  <xsd:complexType name="ReleaseStatusType">
-    <xsd:annotation>
-      <xsd:documentation>
-      ReleaseStatus. Specifies date of release, and effectivities.
-
-      Attributes:
-      
-      dateReleased:    Date and time released.
-      effectivityRefs: Reference to Effectivity elements.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="dateReleased" type="xsd:dateTime" use="optional"/>
-        <xsd:attribute name="effectivityRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Effectivity"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ReleaseStatus" type="plm:ReleaseStatusType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* Drawing ****************************** -->
-  <!-- -->
-  <xsd:complexType name="DrawingType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is the revision-independent Drawing element. A Drawing is a 2D representation
-      of one or more ProductRevisions/ProductRevisionViews.
-      
-      Use the 'catalogueId' attribute on the Structure class as a persistent Id for the
-      Drawing.
-      
-      Attributes:
-      
-      title          Title of the Drawing.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureBase">
-        <xsd:attribute name="title" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Drawing" type="plm:DrawingType" substitutionGroup="plm:Structure"/>
-  <!-- -->
-  <!-- ************************* DrawingRevision *********************** -->
-  <!-- -->
-  <xsd:complexType name="DrawingRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of a Drawing.
-      
-      Attributes:
-      
-      externalFileRefs:  URI references to the Drawing files. These should be
-                         ExternalFile elements.
-      drawnRefs:         URI references to ProductRevisions or ProductRevisionViews
-                         drawn in this Drawing revision.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionBase">
-        <xsd:attribute name="externalFileRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:ExternalFile"/>
-        <xsd:attribute name="drawnRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Managed"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DrawingRevision" type="plm:DrawingRevisionType" substitutionGroup="plm:StructureRevision"/>
-  <!-- -->
-  <!-- ************************* DrawingRevisionView *********************** -->
-  <!-- -->
-  <xsd:complexType name="DrawingRevisionViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a View (design, manufacturing, etc) of a Revision of a Drawing.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionViewBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DrawingRevisionView" type="plm:DrawingRevisionViewType" substitutionGroup="plm:StructureRevisionView"/>
-  <!-- -->
-  <!-- ************************* ProductFamily ***************************** -->
-  <!-- -->
-  <xsd:complexType name="ProductFamilyType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element connects a ProductRevision or ProductRevisionView to a 'template'
-      ProductRevision/ProductRevisionView which represents a Product Family of which 
-      it is a member. For example a template ProductRevision might represent the 'Bolt'
-      family and a member ProductRevision might be a 2cm Bolt.
-      
-      The member may be specified by a collection of parameter values in the 'Parameters' 
-      UserData sub-element. The exact way in which these parameters are interpreted will
-      depend on the CAD system which defined the Template.
-      
-      Attributes:
-      
-      memberRef:         URI reference to member ProductRevision/ProductRevisionView
-      templateRef:       URI reference to template ProductRevision/ProductRevisionView
-      
-      Elements:
-      
-      Parameters         UserData element containing defining parameters for the member
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element name="Parameters" type="plm:UserDataType" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="memberRef" type="plm:anyURIType" use="required" plm:refType="plm:Managed"/>
-        <xsd:attribute name="templateRef" type="plm:anyURIType" use="required" plm:refType="plm:Managed"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductFamily" type="plm:ProductFamilyType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* ProductDependency ***************************** -->
-  <!-- -->
-  <xsd:complexType name="ProductDependencyType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element represents a dependency between one ProductRevision,
-      ProductRevisionView or Occurrence, and another. The slave depends in some way on
-      the master. 
-      
-      The nature of the dependency may be specific to the CAD system which defined it,
-      and is specified by the 'type' attribute, and the 'Parameters' UserData
-      sub-element.
-      
-      Attributes:
-      
-      type            The type of dependency.
-      slaveRef        URI reference to the dependent ProductRevision, ProductRevisionView
-                      or Occurrence.
-      masterRef       URI reference to the master ProductRevision, ProductRevisionView or
-                      Occurrence.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ConnectionBase">
-        <xsd:sequence>
-          <xsd:element name="Parameters" type="plm:UserDataType" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="type" type="xsd:string" use="optional"/>
-        <xsd:attribute name="slaveRef" type="plm:anyURIType" use="required" plm:refType="plm:Managed"/>
-        <xsd:attribute name="masterRef" type="plm:anyURIType" use="required" plm:refType="plm:Managed"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductDependency" type="plm:ProductDependencyType" substitutionGroup="plm:Connection"/>
-  <!-- -->
-  <!-- ************************* ValueWithUnit ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ValueWithUnitType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This represents a numerical value with a unit, e.g. "3.1 miles".
-      
-      Attributes:
-      
-      name:       (inherited from DescriptionBase) name, e.g. "mileage"
-      value:      the value
-      unitRef:    reference to a Unit element. If this omitted, the value is unitless.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="value" type="xsd:double" use="required"/>
-        <xsd:attribute name="unitRef" type="plm:anyURIType" use="optional" plm:refType="plm:Unit"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ValueWithUnit" type="plm:ValueWithUnitType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* RangeWithUnit ****************************** -->
-  <!-- -->
-  <xsd:complexType name="RangeWithUnitType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This represents a numerical range with a unit, e.g. "3.1-4.2 miles", or
-      "at least 100 litres". At least one of the limit attributes must be present.
-      
-      Attributes:
-      
-      name:       (inherited from DescriptionBase) name, e.g. "mileage"
-      lowerLimit: the lower limit
-      upperLimit: the upper limit
-      unitRef:    reference to a Unit element. If this omitted, the value is unitless.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="lowerLimit" type="xsd:double" use="optional"/>
-        <xsd:attribute name="upperLimit" type="xsd:double" use="optional"/>
-        <xsd:attribute name="unitRef" type="plm:anyURIType" use="optional" plm:refType="plm:Unit"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="RangeWithUnit" type="plm:RangeWithUnitType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* AssociatedAttachment ************************** -->
-  <!-- -->
-  <xsd:complexType name="AssociatedAttachmentType">
-    <xsd:annotation>
-      <xsd:documentation>
-      Represents a configured attachment to an Occurrence. When an unconfigured element
-      (such as a ProductInstance) has an attachment, for example by means of a 
-      GeneralRelation, or AssociatedDataSet, then a corresponding configured element 
-      (such as an Occurrence) may have that attachment configured.
-    
-      Attributes:
-    
-      role:           the role of the attachment i.e. the relation to its owner.
-      
-      contextRef:     The corresponding configured element (e.g. ProductInstance) which owns
-                      the attachment.
-                
-      attachmentRef:  reference to the attached element.
-
-      childRefs:      sub-Attachments
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="role" type="xsd:string"/>
-        <xsd:attribute name="contextRef" type="plm:anyURIType"/>
-        <xsd:attribute name="attachmentRef" type="plm:anyURIType" use="required"/>
-        <xsd:attribute name="childRefs" type="plm:uriReferenceListType" plm:refType="plm:AssociatedAttachment"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AssociatedAttachment" type="plm:AssociatedAttachmentType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* OccurrenceGroup ****************************** -->
-  <!-- -->
-  <xsd:complexType name="OccurrenceGroupType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a group of InstancePaths and other OccurrenceGroups. All the InstancePaths
-      included (recursively) in an OccurrenceGroup must have the same InstancePathRoot.
-    
-      OccurrenceGroups can share InstancePaths or other OccurrenceGroups, but must not
-      contain recursive loops.
-    
-      Attributes:
-    
-      instancePathRootRef: reference to the common InstancePathRoot.
-                      
-      childRefs:           reference to contained InstancePaths or OccurrenceGroups
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:attribute name="instancePathRootRef" type="plm:anyURIType" plm:refType="plm:InstancePathRoot"/>
-        <xsd:attribute name="childRefs" type="plm:uriReferenceListType" plm:refType="plm:AttribOwner"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="OccurrenceGroup" type="plm:OccurrenceGroupType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* InstanceThread ******************************** -->
-  <!-- -->
-  <xsd:complexType name="InstanceThreadType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element collects together Instances which correspond across different
-      revisions of a structure. An Instance can only be in one InstanceThread,
-      which it references by its instanceThreadRef attribute.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="InstanceThread" type="plm:InstanceThreadType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* InstancePathRoot ******************************** -->
-  <!-- -->
-  <xsd:complexType name="InstancePathRootType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element represents the root of a tree of InstancePaths.
-    
-      Attributes:
-      
-      structureViewRef: This is the StructureView at the top of the InstancePaths in the
-                        tree.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="structureViewRef" type="plm:anyURIType" use="optional" plm:refType="plm:StructureView"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="InstancePathRoot" type="plm:InstancePathRootType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* InstancePath ******************************** -->
-  <!-- -->
-  <xsd:complexType name="InstancePathType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element represents an unconfigured path of InstanceThreads, top to bottom.
-    
-      The path must be sequential in that the 'instanced' Structure of each InstanceThread
-      must be the same as the 'parent' Structure of the next InstanceThread in the path.
-      It is possible (although unusual) for an InstancePath to 'change views' as you go
-      down the path.
-    
-      Attributes:
-      
-      instancePathRootRef: The InstancePathRoot which represents the top of the tree
-                           this InstancePath is in.
-
-      instanceThreadRef:   This is the last (bottom) InstanceThread in the instance path.
-                           (Unlike the Occurrence element, which has an "instanceRefs" 
-                           attribute to specify the full path, this element only
-                           specifies the last InstanceThread, and relies on its
-                           'ancestor' elements to define the path).
-      
-      childRefs:           the 'children' of the InstancePath. This is a selection of
-                           other InstancePaths, each of which must have a path which is 
-                           formed by adding one more InstanceThread on the end of the
-                           path. There must be no duplicates paths.                        
-
-      absoluteOccurrenceRef: This is a back-pointer to a referencing AbsoluteOccurrence 
-                           (There can be at most one AbsoluteOccurrence referencing a
-                           given InstancePath)
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:attribute name="instancePathRootRef" type="plm:anyURIType" use="optional" plm:refType="plm:InstancePathRoot"/>
-        <xsd:attribute name="instanceThreadRef" type="plm:anyURIType" use="optional" plm:refType="plm:InstanceThread"/>
-        <xsd:attribute name="childRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:InstancePath"/>
-        <xsd:attribute name="absoluteOccurrenceRef" type="plm:anyURIType" plm:refType="plm:AbsoluteOccurrence"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="InstancePath" type="plm:InstancePathType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* AbsoluteOccurrence *************************** -->
-  <!-- -->
-  <xsd:complexType name="AbsoluteOccurrenceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      An AbsoluteOccurrence provides a mechanism for collecting together a number of
-      InstancePaths, which in some sense 'correspond' (for example the front left wheels
-      in two different cars). There are no actual requirements on what these
-      InstancePaths are.
-     
-      Attributes:
-    
-      occurrenceId:         an id for the Occurrence
-      instancePathRefs:     the InstancePaths in the AbsoluteOccurrence
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="occurrenceId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="instancePathRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:InstancePath"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="AbsoluteOccurrence" type="plm:AbsoluteOccurrenceType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* StructureView ***************************** -->
-  <!-- -->
-  <xsd:complexType name="StructureViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This abstract element represents a View (e.g. 'design') of a Structure. 
-      It simply references the associated Structure and View elements.
-    
-      Attributes:
-    
-      masterRef:      reference to the Structure
-      viewRef:        reference to the View
-      propertyRefs:   reference to Properties
-      
-      Elements:
-      
-      PropertyGroup
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:PropertyGroup" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="masterRef" type="plm:anyURIType" use="optional" plm:refType="plm:Structure"/>
-        <xsd:attribute name="viewRef" type="plm:anyURIType" use="optional" plm:refType="plm:View"/>
-        <xsd:attribute name="propertyRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Property"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="StructureView" type="plm:StructureViewType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* ProductStructureView ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ProductStructureViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element represents a View of a Product, e.g. 'design' View.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureViewType"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProductStructureView" type="plm:ProductStructureViewType" substitutionGroup="plm:StructureView"/>
-  <!-- -->
-  <!-- ************************* GeneralRelation ****************************** -->
-  <!-- -->
-  <xsd:complexType name="GeneralRelationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is general relation between a number of elements. The type of relation
-      is given by the 'subType' attribute inherited from ManagedBase.
-      
-      There are no specified values of 'subType'. Therefore the semantics of the
-      relation are not defined here.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ManagedBase">
-        <xsd:attribute name="relatedRefs" type="plm:uriReferenceListType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GeneralRelation" type="plm:GeneralRelationType" substitutionGroup="plm:Managed"/>
-  <!-- -->
-  <!-- ************************* Property ****************************** -->
-  <!-- -->
-  <xsd:complexType name="PropertyBase" abstract="true">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is an abstract base class for Properties. A Property will override a similar
-      Property if it attached to an earlier element in the following list:
-      Occurrence, Instance, StructureRevisionView, StructureRevision, Structure. So, for
-      example, a Property on an Instance will override a similar Property on the 
-      corresponding StructureRevision.
-      
-      Attributes:
-      
-      ownerRef:        The owner of the property. Necessary when the owner is an object
-                       in a Representation file, e.g. an XT Face.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="ownerRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Property" type="plm:PropertyBase" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* PropertyGroup ****************************** -->
-  <!-- -->
-  <xsd:complexType name="PropertyGroupType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a group of Properties.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Property" maxOccurs="unbounded"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PropertyGroup" type="plm:PropertyGroupType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* LengthProperty ****************************** -->
-  <!-- -->
-  <xsd:complexType name="LengthPropertyType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property represents the length of an object (such as a pipe or wire).
-
-      Attributes:
-
-      type:            A string specifying the type of value, e.g. whether computed
-                       or measured.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-        <xsd:attribute name="type" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="LengthProperty" type="plm:LengthPropertyType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* MassProperty ****************************** -->
-  <!-- -->
-  <xsd:complexType name="MassPropertyType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property represents the Mass of an object.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="MassProperty" type="plm:MassPropertyType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* Density ****************************** -->
-  <!-- -->
-  <xsd:complexType name="DensityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property represents the Density of an object.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Density" type="plm:DensityType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ****************************** Colour ***************************** -->
-  <!-- -->
-  <xsd:complexType name="ColourType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property represents the colour of an object.
-      
-      Attributes:
-      
-      ambient:       ambient colour
-      diffuse:       diffuse colour
-      specular:      specular colour
-      emissive:      emissive colour
-      shininess:     shininess coefficient (0-255)
-      alpha:         alpha coefficient (0-1)
-      colourId:      string id of the colour
-      type:          a string indicating the use of the colour in the
-                     owning element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="ambient" type="plm:RGBType" use="optional"/>
-        <xsd:attribute name="diffuse" type="plm:RGBType" use="optional"/>
-        <xsd:attribute name="specular" type="plm:RGBType" default="0.0 0.0 0.0"/>
-        <xsd:attribute name="emissive" type="plm:RGBType" default="0.0 0.0 0.0"/>
-        <xsd:attribute name="shininess" type="plm:ShininessType" default="0.0"/>
-        <xsd:attribute name="alpha" type="plm:AlphaType" default="1.0"/>
-        <xsd:attribute name="colourId" type="xsd:string" use="optional"/>
-        <xsd:attribute name="type" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Colour" type="plm:ColourType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* ThermalExpansionCoefficient ********************** -->
-  <!-- -->
-  <xsd:complexType name="ThermalExpansionCoefficientType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the (volume) Thermal Expansion Coefficient of an object.
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ThermalExpansionCoefficient" type="plm:ThermalExpansionCoefficientType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* ThermalConductivity ********************** -->
-  <!-- -->
-  <xsd:complexType name="ThermalConductivityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Thermal Conductivity of an object.
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ThermalConductivity" type="plm:ThermalConductivityType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ****************************** SpecificHeatCapacity **************************** -->
-  <!-- -->
-  <xsd:simpleType name="SpecificHeatCapacityEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="constantPressure"/>
-      <xsd:enumeration value="constantVolume"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="SpecificHeatCapacityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Specific Heat Capacity of an object.
-      
-      Attributes:
-      
-      type:          constantPressure (default) or constantVolume
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Rated Voltage.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-        <xsd:attribute name="type" type="plm:SpecificHeatCapacityEnum" default="constantPressure"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SpecificHeatCapacity" type="plm:SpecificHeatCapacityType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* ModulusOfElasticity ********************** -->
-  <!-- -->
-  <xsd:complexType name="ModulusOfElasticityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Modulus of Elasticity of an object (also known 
-      as Young's Modulus).
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ModulusOfElasticity" type="plm:ModulusOfElasticityType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* PoissonsRatio *************************** -->
-  <!-- -->
-  <xsd:complexType name="PoissonsRatioType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Poisson's Ratio of an object.
-      
-      Attributes:
-      
-      value:         value of Poissons' Ratio
-      lowerLimit:    lower limit
-      upperLimit:    upper limit
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="value" type="xsd:double" use="optional"/>
-        <xsd:attribute name="lowerLimit" type="xsd:double" use="optional"/>
-        <xsd:attribute name="upperLimit" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PoissonsRatio" type="plm:PoissonsRatioType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* YieldStress ********************************** -->
-  <!-- -->
-  <xsd:complexType name="YieldStressType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Yield Stress of an object (the tensile stress a
-      material can support without permanent deformation).
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="YieldStress" type="plm:YieldStressType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* UltimateStress ********************************** -->
-  <!-- -->
-  <xsd:complexType name="UltimateStressType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Ultimate Stress of an object (the tensile stress a
-      material can support without breaking).
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="UltimateStress" type="plm:UltimateStressType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* UltimateElongation *************************** -->
-  <!-- -->
-  <xsd:complexType name="UltimateElongationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Ultimate Elongation of an object, that is, the 
-      strain an object can support under tensile stress, before breaking. Note
-      this is a ratio, not a percentage.
-      
-      Attributes:
-      
-      value:         value of Ultimate Elongation.
-      lowerLimit:    lower limit
-      upperLimit:    upper limit
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="value" type="xsd:double" use="optional"/>
-        <xsd:attribute name="lowerLimit" type="xsd:double" use="optional"/>
-        <xsd:attribute name="upperLimit" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="UltimateElongation" type="plm:UltimateElongationType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* SurfaceArea ********************************** -->
-  <!-- -->
-  <xsd:complexType name="SurfaceAreaType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Surface Area of an object.
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SurfaceArea" type="plm:SurfaceAreaType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* Volume ********************************** -->
-  <!-- -->
-  <xsd:complexType name="VolumeType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Volume of an object.
-      
-      Elements:
-      
-      ValueWithUnit
-      RangeWithUnit  one of these sub-elements should be used to indicate the value
-                     or range of the Property.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:choice>
-          <xsd:element ref="plm:ValueWithUnit"/>
-          <xsd:element ref="plm:RangeWithUnit"/>
-        </xsd:choice>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Volume" type="plm:VolumeType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* CentreOfMass ********************************** -->
-  <!-- -->
-  <xsd:complexType name="CentreOfMassType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Centre of Mass of an object.
-      
-      Attributes:
-      
-      value:         The vector position of the Centre Of Mass (in metres).
-      
-      Elements:
-      
-      Bound:         The Bound sub-element, if present, gives an error bound
-                     on the centre of mass.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Bound" minOccurs="0"/>
-        </xsd:sequence>
-        <xsd:attribute name="value" type="plm:VectorType"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CentreOfMass" type="plm:CentreOfMassType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* Inertia ********************************** -->
-  <!-- -->
-  <xsd:complexType name="InertiaType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property gives the Inertia Tensor of an object, at its Centre of
-      Mass.
-      
-      Attributes:
-      
-      value:        The value of the Inertia matrix. Only 6 values are given,
-                    in the order Ixx, Ixy, Ixz, Iyy, Iyz, Izz, as the matrix
-                    is symmetric.
-      error:        If present, this gives the error bound for the Inertia, as
-                    12 doubles, in the order Ixx-min, Ixx-max, Ixy-min, Ixy-max,
-                    etc.
-      unitRef:      Reference to a Unit element. If absent, S.I. units are
-                    assumed.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:sequence/>
-        <xsd:attribute name="value" type="plm:DoubleListType" use="required"/>
-        <xsd:attribute name="error" type="plm:DoubleListType" use="optional"/>
-        <xsd:attribute name="unitRef" type="plm:anyURIType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Inertia" type="plm:InertiaType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- **************************** SetFilter ************************************ -->
-  <!-- -->
-  <xsd:simpleType name="SetFilterOperationEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="unite"/>
-      <xsd:enumeration value="intersect"/>
-      <xsd:enumeration value="exclude"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="SetFilterType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A type of Filter which is defined in terms of set operations on other
-      Filters.
-      
-      Attributes:
-      
-      operation:         unite, intersect, or complement
-      
-      Elements:
-      
-      OccurrenceFilter:  Filters to be combined. If operation="complement", the Filters
-                         are implicitly united before the Complement is performed.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OccurrenceFilterBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:OccurrenceFilter" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="operation" type="plm:SetFilterOperationEnum" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SetFilter" type="plm:SetFilterType" substitutionGroup="plm:OccurrenceFilter"/>
-  <!-- -->
-  <!-- ******************************** GroupFilter *************************** -->
-  <!-- -->
-  <xsd:complexType name="GroupFilterType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A type of Filter which specifies an explicit collection of Occurrences. The filter 
-      specifies two lists of Occurrences. Those in the first list are simply added to the 
-      output of the Filter, without child Occurrences being included. Those in the second
-      list result in the output of the Filter also containing their (recursive) child 
-      Occurrences.     
-      
-      Attributes:
-      
-      targetRefs:            Occurrences, not including their child Occurrences
-      targetRecursiveRefs    Occurrences, recursively including their child Occurrences      
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OccurrenceFilterBase">
-        <xsd:attribute name="targetRefs" type="plm:uriReferenceListType" use="optional"/>
-        <xsd:attribute name="targetRecursiveRefs" type="plm:uriReferenceListType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="GroupFilter" type="plm:GroupFilterType" substitutionGroup="plm:OccurrenceFilter"/>
-  <!-- -->
-  <!-- ************************ PropertyFilter **************************** -->
-  <!-- -->
-  <xsd:simpleType name="PropertyFilterOperationEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="regularExpression"/>
-      <xsd:enumeration value="equal"/>
-      <xsd:enumeration value="notEqual"/>
-      <xsd:enumeration value="lessThan"/>
-      <xsd:enumeration value="lessThanOrEqual"/>
-      <xsd:enumeration value="greaterThan"/>
-      <xsd:enumeration value="greaterThanOrEqual"/>
-      <xsd:enumeration value="begins"/>
-      <xsd:enumeration value="contains"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="PropertyFilterType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A type of Filter based on querying properties of the objects filtered. If
-      the operation specified returns true, the relevant Occurrence is included.
-      
-      If 'operation' and 'value' are both omitted, then the PropertyFilter selects
-      those Occurrences for which the indicated property has a value.
-    
-      Attributes:    
-      
-      property:           The name of the property on which the filter is based
-      operation:          The operation performed on the property value
-      value:              The other operand
-      type:               The type of 'value'
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OccurrenceFilterBase">
-        <xsd:attribute name="property" type="xsd:string" use="required"/>
-        <xsd:attribute name="operation" type="plm:PropertyFilterOperationEnum" use="optional"/>
-        <xsd:attribute name="value" type="xsd:string" use="optional"/>
-        <xsd:attribute name="type" type="plm:UserValueDataType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PropertyFilter" type="plm:PropertyFilterType" substitutionGroup="plm:OccurrenceFilter"/>
-  <!-- -->
-  <xsd:complexType name="ProximityZoneType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a Zone defined by a distance from a bounding shape, defined by a collection
-      of objects.
-
-      Attributes:
-      
-      entityRefs:           Reference to objects which defines the Zone. The objects are
-                            implicitly united.
-      distance:             Proximity distance in metres.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:ZoneBase">
-        <xsd:attribute name="entityRefs" type="plm:uriReferenceListType" use="optional"/>
-        <xsd:attribute name="distance" type="xsd:double" use="required"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ProximityZone" type="plm:ProximityZoneType" substitutionGroup="plm:Zone"/>
-  <!-- -->
-  <!-- *************************************** ZoneFilter ****************************** -->
-  <!-- -->
-  <xsd:complexType name="ZoneFilterType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A type of Occurrence Filter based on a geometric zone.
-            
-      Attributes:      
-        
-      includeIn:          If true, then include occurrences that are inside the zone. 
-      includeOut:         If true, then include occurrences that are outside the zone. 
-      includeOn:          If true, then include occurrences that intersect the zone. 
-      zoneRef:            Reference to Zone element.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:OccurrenceFilterBase">
-        <xsd:attribute name="includeIn" type="xsd:boolean" default="true"/>
-        <xsd:attribute name="includeOut" type="xsd:boolean" default="false"/>
-        <xsd:attribute name="includeOn" type="xsd:boolean" default="true"/>
-        <xsd:attribute name="zoneRef" type="plm:anyURIType" use="optional" plm:refType="plm:Zone"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="ZoneFilter" type="plm:ZoneFilterType" substitutionGroup="plm:OccurrenceFilter"/>
-  <!-- -->
-  <!-- ************************* DisplayPreferences ****************************** -->
-  <!-- -->
-  <xsd:complexType name="DisplayPreferencesType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property represents the display preferences for an element such as a
-      ProductRevisionView.
-
-      Attributes:
-      
-      unitRef:         a Unit element giving the preferred display units.
-      displayAnnotations Indicates that elements derived from Annotation3D
-                       should be displayed in the target visualisation application.
-      displayGeometry  Indicates that elements derived from Geometry or geometry
-                       referenced via Reference elements should be displayed
-                       in the target visualisation application.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="unitRef" type="plm:anyURIType" use="optional" plm:refType="plm:Unit"/>
-        <xsd:attribute name="displayAnnotations" type="xsd:boolean" default="true"/>
-        <xsd:attribute name="displayGeometry" type="xsd:boolean" default="true"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DisplayPreferences" type="plm:DisplayPreferencesType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* RepresentationEntity *************************** -->
-  <!-- -->
-  <xsd:complexType name="RepresentationEntityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      A 'logical entity' which corresponds to objects in a number of
-      equivalent Representations.
-      
-      Attributes:
-      
-      entityRefs:      reference to EntityRef elements in Representations
-                       or CompoundReps.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:attribute name="entityRefs" type="plm:uriReferenceListType" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="RepresentationEntity" type="plm:RepresentationEntityType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* EntityPropertyGroup ****************************** -->
-  <!-- -->
-  <xsd:complexType name="EntityPropertyGroupType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a group of Properties which apply to a specified set of 
-      RepresentationEntities.
-      
-      Attributes:
-      
-      entityRefs:      reference to RepresentationEntity elements
-      
-      Elements:
-      
-      Property         Properties of the referenced entities.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:AttribOwnerBase">
-        <xsd:sequence>
-          <xsd:element ref="plm:Property" maxOccurs="unbounded"/>
-        </xsd:sequence>
-        <xsd:attribute name="entityRefs" type="plm:uriReferenceListType"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="EntityPropertyGroup" type="plm:EntityPropertyGroupType" substitutionGroup="plm:AttribOwner"/>
-  <!-- -->
-  <!-- ************************* Visibility ****************************** -->
-  <!-- -->
-  <xsd:complexType name="VisibilityType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property specifies whether an object is visible or not - also
-      referred to as unblanked/blanked.
-
-      Attributes:
-      
-      value:           logical: true is visible, false is invisible
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="value" type="xsd:boolean" use="optional" default="true"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Visibility" type="plm:VisibilityType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* CoordinateSystemDisplay ****************** -->
-  <!-- -->
-  <xsd:simpleType name="CoordinateSystemStyleEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="cartesian"/>
-      <xsd:enumeration value="spherical"/>
-      <xsd:enumeration value="cylindrical"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="CoordinateSystemDisplayType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property controls the display of a Coordinate System.
-
-      Attributes:
-      
-      style:           an enumeration defining the display.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="style" type="plm:CoordinateSystemStyleEnum" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="CoordinateSystemDisplay" type="plm:CoordinateSystemDisplayType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* PointDisplay ******************************** -->
-  <!-- -->
-  <xsd:simpleType name="PointStyleEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="point"/>
-      <xsd:enumeration value="plus"/>
-      <xsd:enumeration value="asterisk"/>
-      <xsd:enumeration value="circle"/>
-      <xsd:enumeration value="cross"/>
-      <xsd:enumeration value="triangle"/>
-      <xsd:enumeration value="invertedTriangle"/>
-      <xsd:enumeration value="square"/>
-      <xsd:enumeration value="diamond"/>
-      <xsd:enumeration value="dot"/>
-      <xsd:enumeration value="hash"/>
-      <xsd:enumeration value="gridPoint"/>
-      <xsd:enumeration value="centreLine"/>
-      <xsd:enumeration value="anchor"/>
-      <xsd:enumeration value="filledCircle"/>
-      <xsd:enumeration value="filledSquare"/>
-      <xsd:enumeration value="largeFilledSquare"/>
-      <xsd:enumeration value="circleInCircle"/>
-      <xsd:enumeration value="circleInSquare"/>
-      <xsd:enumeration value="squareInSquare"/>
-      <xsd:enumeration value="filledLeftTriangle"/>
-      <xsd:enumeration value="filledRightTriangle"/>
-      <xsd:enumeration value="filledUpTriangle"/>
-      <xsd:enumeration value="filledDownTriangle"/>
-      <xsd:enumeration value="filledLeftTriangleInCircle"/>
-      <xsd:enumeration value="filledRightTriangleInCircle"/>
-      <xsd:enumeration value="filledUpTriangleInCircle"/>
-      <xsd:enumeration value="filledDownTriangleInCircle"/>
-      <xsd:enumeration value="filledLeftTriangleInSquare"/>
-      <xsd:enumeration value="filledRightTriangleInSquare"/>
-      <xsd:enumeration value="filledUpTriangleInSquare"/>
-      <xsd:enumeration value="filledDownTriangleInSquare"/>
-      <xsd:enumeration value="roundedCross"/>
-      <xsd:enumeration value="filledDiamond"/>
-      <xsd:enumeration value="upDownTriangles"/>
-      <xsd:enumeration value="leftRightTriangles"/>
-      <xsd:enumeration value="smallWheel"/>
-      <xsd:enumeration value="largeWheel"/>
-      <xsd:enumeration value="hollowCircle"/>
-      <xsd:enumeration value="arcEndPoint"/>
-      <xsd:enumeration value="bigAsterisk"/>
-      <xsd:enumeration value="lineInCircle"/>
-      <xsd:enumeration value="plusInCircle"/>
-      <xsd:enumeration value="centreOfRotation"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="PointDisplayType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property controls the display of a Point.
-
-      Attributes:
-      
-      style:           an enumeration defining the display.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="style" type="plm:PointStyleEnum" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="PointDisplay" type="plm:PointDisplayType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* LineDisplay ******************************** -->
-  <!-- -->
-  <xsd:simpleType name="LineStyleEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="solid"/>
-      <xsd:enumeration value="dashed"/>
-      <xsd:enumeration value="longDashed"/>
-      <xsd:enumeration value="dotDash"/>
-      <xsd:enumeration value="dotted"/>
-      <xsd:enumeration value="phantom"/>
-      <xsd:enumeration value="centreline"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:simpleType name="LineThicknessEnum">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="thin"/>
-      <xsd:enumeration value="normal"/>
-      <xsd:enumeration value="thick"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- -->
-  <xsd:complexType name="LineDisplayType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property controls the display of a line.
-
-      Attributes:
-      
-      style:           an enumeration defining the display.
-      thickness:       an enumeration defining the thickness of the line.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="style" type="plm:LineStyleEnum" use="optional"/>
-        <xsd:attribute name="thickness" type="plm:LineThicknessEnum" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="LineDisplay" type="plm:LineDisplayType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* Translucency ******************************** -->
-  <!-- -->
-  <xsd:complexType name="TranslucencyType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property specifies the Translucency of an object.
-
-      Attributes:
-      
-      value:           the Translucency. 0.0 is opaque; 1.0 is fully Translucent (invisible).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="value" type="xsd:double" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Translucency" type="plm:TranslucencyType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* OccurrenceControl ****************************** -->
-  <!-- -->
-  <xsd:complexType name="OccurrenceControlType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is the revision-independent element which represents control over Occurrence(s) 
-      and their AbsoluteOccurrence data in a set context
-       
-      Attributes:
-      
-      controlledOccurrenceRef: the AbsoluteOccurrence controlled by this OccurrenceControl
-      contextRef:            the context of the OccurrenceControl
-
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureBase">
-        <xsd:attribute name="controlledOccurrenceRef" type="plm:anyURIType" use="required" plm:refType="plm:AbsoluteOccurrence"/>
-        <xsd:attribute name="contextRef" type="plm:anyURIType" use="required" plm:refType="plm:StructureView plm:StructureRevisionView"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="OccurrenceControl" type="plm:OccurrenceControlType" substitutionGroup="plm:Structure"/>
-  <!-- -->
-  <!-- ************************* OccurrenceControlRevision *********************** -->
-  <!-- -->
-  <xsd:complexType name="OccurrenceControlRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of an OccurrenceControl
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="OccurrenceControlRevision" type="plm:OccurrenceControlRevisionType" substitutionGroup="plm:StructureRevision"/>
-  <!-- -->
-  <!-- ************************* SymbolicOccurrence ******************************** -->
-  <!-- -->
-  <xsd:complexType name="SymbolicOccurrenceType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This element is used to "re-organise" an Occurrence under a new parent
-      Occurrence. It references the "source" Occurrence which is being reorganised, and 
-      specifies the new parent.
-     
-      Attributes:
-    
-      contextRef:            Occurrence defining the context in which the reorganisation
-                             was defined
-      sourceRef:             the source Occurrence or Instance being reorganised
-      parentRef:             the new parent Occurrence, SymbolicOccurrence, Instance or 
-                             StructureRevisionView
-      showSource:            true if the source Occurrence or Instance should be displayed, 
-                             as well as the reorganised one
-      symbolicRefs:          the child SymbolicOccurrences
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:DescriptionBase">
-        <xsd:attribute name="contextRef" type="plm:anyURIType" use="optional" plm:refType="plm:Occurrence"/>
-        <xsd:attribute name="sourceRef" type="plm:anyURIType" use="required" plm:refType="plm:Occurrence plm:Instance"/>
-        <xsd:attribute name="parentRef" type="plm:anyURIType" use="optional" plm:refType="plm:Occurrence plm:SymbolicOccurrence plm:Instance plm:StructureRevisionView"/>
-        <xsd:attribute name="showSource" type="xsd:boolean" default="false"/>
-        <xsd:attribute name="symbolicRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:SymbolicOccurrence"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="SymbolicOccurrence" type="plm:SymbolicOccurrenceType"/>
-  <!-- -->
-  <!-- ************************* Suppression ******************************** -->
-  <!-- -->
-  <xsd:complexType name="SuppressionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property specifies the Suppression state of an object. Suppressing 
-      an Occurrence effectively removes it from the Product Structure; so it 
-      is not rendered, does not take part in mass property calculations, and 
-      does not appear in the Bill of Materials.
-
-      Attributes:
-      
-      value:           true if the object is Suppressed.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="value" type="xsd:boolean" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Suppression" type="plm:SuppressionType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ************************* Layer ******************************** -->
-  <!-- -->
-  <xsd:complexType name="LayerType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This Property specifies the Layer number of an element, for display purposes.
-
-      Attributes:
-      
-      value:           the number of the Layer the object is on.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:PropertyBase">
-        <xsd:attribute name="value" type="xsd:integer" use="optional"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Layer" type="plm:LayerType" substitutionGroup="plm:Property"/>
-  <!-- -->
-  <!-- ********************* TraceabilityRelation ****************************** -->
-  <!-- -->
-  <xsd:complexType name="TraceabilityRelationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This relation relates a "defining" element to a "complying" element.
-      
-      For example, the "defining" element might be a Requirements Document,
-      and the "complying" element a Part.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeneralRelationType"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="TraceabilityRelation" type="plm:TraceabilityRelationType" substitutionGroup="plm:GeneralRelation"/>
-  <!-- -->
-  <!-- ********************* Design ****************************** -->
-  <!-- -->
-  <xsd:complexType name="DesignType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This represents the geometric definition of a Product.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Design" type="plm:DesignType" substitutionGroup="plm:Structure"/>
-  <!-- -->
-  <!-- ************************* DesignRevision *********************** -->
-  <!-- -->
-  <xsd:complexType name="DesignRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of a Design.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DesignRevision" type="plm:DesignRevisionType" substitutionGroup="plm:StructureRevision"/>
-  <!-- -->
-  <!-- ************************* DesignRevisionView ******************************** -->
-  <!-- -->
-  <xsd:complexType name="DesignRevisionViewType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a 'view' of a revision of a Design.
-      
-      Attributes:
-      
-      representationRefs: Representations of the DesignRevisionView.
-      geometryRefs:       geometry elements referenced by the DesignRevisionView.
-     
-      Elements:
-
-      Representation:     see representationRefs.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionViewBase">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-          <xsd:element ref="plm:Representation"/>
-        </xsd:choice>
-        <xsd:attribute name="representationRefs" type="xsd:IDREFS" use="optional" plm:refType="plm:Representation"/>
-        <xsd:attribute name="geometryRefs" type="plm:uriReferenceListType" use="optional" plm:refType="plm:Entity"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DesignRevisionView" type="plm:DesignRevisionViewType" substitutionGroup="plm:StructureRevisionView"/>
-  <!-- -->
-  <!-- ********************* RepresentedByRelation ****************************** -->
-  <!-- -->
-  <xsd:complexType name="RepresentedByRelationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This relation relates a ProductRevision to a corresponding DesignRevision.
-      
-      Attributes:
-      
-      primaryDesign: Whether the referenced DesignRevision is the primary.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeneralRelationType">
-        <xsd:attribute name="primaryDesign" type="xsd:boolean" default="false"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="RepresentedByRelation" type="plm:RepresentedByRelationType" substitutionGroup="plm:GeneralRelation"/>
-  <!-- -->
-  <!-- ********************* DefinitionRelation **************************** -->
-  <!-- -->
-  <xsd:complexType name="DefinitionRelationType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This relation relates an Occurrence of a ProductRevisionView to a
-      corresponding Occurrence of a DesignRevisionView. The inherited
-      relatedRefs references must be in that order.
-      
-      Attributes:
-      
-      transform: Whether transform information in the Product Structure comes
-                 from the Design Structure.
-      geometry:  Whether geometry information in the Product Structure comes
-                 from the Design Structure.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:GeneralRelationType">
-        <xsd:attribute name="transform" type="xsd:boolean" default="false"/>
-        <xsd:attribute name="geometry" type="xsd:boolean" default="false"/>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="DefinitionRelation" type="plm:DefinitionRelationType" substitutionGroup="plm:GeneralRelation"/>
-  <!-- -->
-  <!-- ********************* Requirement ****************************** -->
-  <!-- -->
-  <xsd:complexType name="RequirementType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This represents a Requirement, i.e. a single Requirement for a 
-      Product (not a Requirements Document).
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureBase"/>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="Requirement" type="plm:RequirementType" substitutionGroup="plm:Structure"/>
-  <!-- -->
-  <!-- ************************* RequirementRevision *********************** -->
-  <!-- -->
-  <xsd:complexType name="RequirementRevisionType">
-    <xsd:annotation>
-      <xsd:documentation>
-      This is a revision of a Requirement.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:complexContent>
-      <xsd:extension base="plm:StructureRevisionBase">
-        <xsd:sequence>
-          <xsd:element name="PlainText" type="xsd:string"/>
-        </xsd:sequence>
-      </xsd:extension>
-    </xsd:complexContent>
-  </xsd:complexType>
-  <xsd:element name="RequirementRevision" type="plm:RequirementRevisionType" substitutionGroup="plm:StructureRevision"/>
-  <!-- -->
-</xsd:schema>
