<?xml version="1.0" encoding="UTF-8"?>
<!--
   This file is provided under the terms of the MIT license reproduced here.
   Copyright © 2021 prostep ivip association
   
   Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
   The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.		
   
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   
   Generated Schema from VEC model. Changelog can be found at https://track.prostep.com/browse/KBLFRM.
   Attention: If this is a SNAPSHOT version, then this schema is produced by a nightly or preview build, 
   is NO OFFICIAL RELEASE and can change at any time.

   Version:   2.0.1
   Revision:  4ffcacb7aaee61bb5a72e4d52f16dad640cdceda
   Timestamp: 2022-10-03
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-->
<xs:schema xmlns:vec="http://www.prostep.org/ecad-if/2011/vec"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.prostep.org/ecad-if/2011/vec"
           version="2.0.1">
   <xs:element name="VecContent" type="vec:VecContent"/>
   <xs:complexType name="AbstractLocalizedString" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">Abstract super-class for Localized text values.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="LanguageCode" type="vec:LanguageCode">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>References the corresponding languageCode of the value.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Value" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The value of the LocalizedString in language defined by the languageCode.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="AbstractSlot" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>AbstractSlot</i>is a geometrical place in a connector housing, which can contain / group cavities. This can be either direct, if it is<i>Slot</i>and indirect if it is a<i>ModularSlot</i>.</p>
            <p>If it is a<i>Slot</i>, then it is an inseparable part of the connector housing, which means it is created during the manufacturing process of the connector housing.</p>
            <p>If it is a<i>ModularSlot</i>it is a place where one or more other connector housing can be place during the assembly.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="SlotNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the number of the slot. This must be unique within a ConnectorHousingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SlotSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the SlotSpecification that is satisfied by the slot.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Coding" type="vec:Coding" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Defines coding of the slot that is satisfied by the Slot.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="AbstractSlotReference" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>AbstractSlotReference</i>represents the usage of an AbstractSlot in the context of PartUsage or PartOccurrence.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the SlotReference. The identification is guaranteed to be unique within the ConnectorHousingRole. The cavity &amp; slot number is defined by the associated cavity and slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedSlot" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Points to the slot referenced by the slot reference.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="AliasIdentification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Class for the definition of alias identifications. Alias identifications are additional identifications for VEC-elements, which are valid in a certain scope (e.g. PPS-ID's).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="IdentificationValue" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the identification value.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Type" type="vec:AliasIdentificationType" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the type (or the role) of the AliasIdentification. Defined literals are contained in an OpenEnumeration.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Scope" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The scope in which the AliasIdentification is valid / or the issuer of the alias id. This could be for example a certain process, a company or an IT-System.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:AbstractLocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>On optional human readable description of the AliasIdentification.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="AntennaSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of the electrological aspects of an antenna.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="FMin" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the minimum operating frequency of the antenna.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FMax" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum operating frequency of the antenna.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Impedance" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the impedance of the antenna.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ApplicationConstraint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>ApplicationConstraint</i>defines a condition with which it is possible to express the inclusion or exclusion of ConfigurableElements in different variants of a product. The<i>ApplicationConstraint</i>is focused to express validity rules based on time periods or elements of the product hierarchy in a concise way (attributes and relationships). It is complementary to the<i>VariantConfiguration</i>which expresses validity rules based on control strings.</p>
            <p>An<i>ApplicationConstraint</i>can reference another<i>ApplicationConstraint</i>as<i>baseInclusion</i>. In this case, an<i>ApplicationConstraint</i>can only be satisfied if its<i>baseInclusion</i>is also satisfied.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Type" type="vec:ApplicationConstraintType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines if the application constraint is positive (allowance) or negative (denial). If the<i>ApplicationConstraint</i>has a<i>baseInclusion</i>that<i>baseInclusion</i>shall define the same type.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FromDate" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the lower bound of the time period to which the application constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ToDate" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the upper bound of the time period to which the application constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FromSerialNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the lower bound of a serial number range to which the application constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ToSerialNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the upper bound of a serial number range to which the application constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ProjectPhase"
                           type="xs:string"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the project phases to which the application constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FromEffectivityControlKey" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>In the production logistics of complex products (like vehicles), the control of operation and cancellation dates of changes, features, components or the like is usually not carried out via concrete dates but via "date keys". These keys are then mapped in planning systems with concrete time specifications for certain plants or production steps. In the VEC these keys are called<i>EffectivityControlKey.</i>
                        </p>
                        <p>With the<i>FromEffectivityControlKey</i>and<i>To</i>
                           <i>EffectivityControlKey</i>a validity interval can be defined. If one of the two values is defined and the other is omitted, the meaning shall be "unbounded".</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ToEffectivityControlKey" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>See<i>FromEffectivityControlKey.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BaseInclusion" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>An<i>ApplicationConstraint</i>can only be satisfied if its<i>baseInclusion</i>is satisfied as well. </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Project" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p> Defines the projects for which the application constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ApplicationConstraintSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of application constraints. The associated ApplicationConstraints are restricting the possible usages of the associated<i>ConfigurableElements</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="ApplicationConstraint"
                           type="vec:ApplicationConstraint"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the UsageConstraints that apply to the PartVersion or PartUsages described by the UsageConstraintSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Approval">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the approval of an ItemVersion. This consists of the StatusOfApproval and the Permissions issued for the approval.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the approval. The identification is guaranteed to be unique over all VEC-documents. Normally this would reference to a company specific approval number or something similar. KBLFRM-349</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional information about the item.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompanyInScope"
                           type="xs:string"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify for which companies the Approval is valid. It might be e.g. that an approved Item may only be delivered by some specific company.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Status" type="vec:StatusOfApproval">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The approval level concerning approval status. Predefined are the values: NotYetApproved, Approved and Withdrawn. The status refers to the status of the<i>Approval</i>, not the status of the<i>ItemVersion.</i>So, e.g. withdrawn means the approval (with its corresponding level) has been withdrawn, not the<i>ItemVersion</i>itself.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LevelOfApproval" type="vec:LevelOfApproval" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Relates to activities that are allowed with the ItemVersion after release for example building pilot tools or production tools. The levelOfApproval applies to the<i>ItemVersion</i>itself without further detailing or additional context. So, for example "Free" means, that from a component's perspective the corresponding<i>PartVersion</i>has satisfied all qualification procedures and can be used within its specified limits without restriction.</p>
                        <p>The levels<i>Planned</i>,<i>Free</i>,<i>Invalid</i>refer to a single approval level. The levels<i>Develop</i>and<i>Restricted</i>refer to a category of approval levels in the lifecycle of an<i>ItemVersion</i>that all belong to the same phase but are highly company specific. For example,<i>Develop</i>approvals might be a "a start of construction approval" or a "building of prototypes or tools allowed approval". "Restricted" approvals might be "only for special purpose vehicles", "spare part only" or "residual parts may be used up".</p>
                        <p>In these cases, the<i>additionalLevelInformation</i>can be used to provide further information (e.g. a company specific approval level).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AdditionalLevelInformation" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Additional potentially company specific information about the level of approval (e.g. further detailing of a "Restricted" approval.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Permission"
                           type="vec:Permission"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the permission issued with the approval.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="AssignmentGroup">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>AssignmentGroup</i>is a concept that allows the clustering of arbitrary elements in ways that are orthogonal to hierarchical and semantic structure of the VEC.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the AssignmentGroup. The identification is guaranteed to be unique within the specification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the<i>AssignmentGroup</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="AssignmentGroupSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification that contains<i>AssignmentGroups</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="AssignmentGroup"
                           type="vec:AssignmentGroup"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Contains the AssignmentGroups that are defined by this AssignmentGroupSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BaselineSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>BaselineSpecification</i>defines a set of<i>ItemVersion</i>s (<i>Document-</i>and<i>PartVersions</i>) that relate to each other in a certain way e.g. all parts and documents in their specific versions that contributed to a specific manufactured result.</p>
            <p>Baselines are a standard mechanism to support change, release and configuration management.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="State" type="vec:BaselineState" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the state of the baseline itself (e.g. if it is finalized or work in progress).</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Content" type="vec:BaselineContent" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the state of the content of the baseline in regard of its defined scope.</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ValidVersions" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>ItemVersions</i>that are the content of the baseline.</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BatterySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of the electrological aspects of a battery.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="U" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the nominal voltage of the battery.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="I" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the current the battery provides.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ICool" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the battery's current in cool state.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Capacity" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the power capacity of the battery.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BoltMountedFixingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for fixings that are mounted onto a bolt. This means the fixing itself has got a hole, which is mounted onto a bolt of the surrounding. </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:FixingSpecification">
            <xs:sequence>
               <xs:element name="BoltType" type="vec:BoltMountedFixingBoltType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the bolt on which the fixing can be mounted.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltShape"
                           type="vec:BoltMountedFixingBoltShape"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the shape of the bolt on which the fixing can be mounted.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the bolt on which the fixing can be mounted.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltHeight" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the height of the bolt on which the fixing can be mounted.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BoltTerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>BoltTerminalRole</i>defines the instance specific properties and relationships of a ring terminal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalRole"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BoltTerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of bolt terminals. These are the counterparts to ring terminals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalSpecification">
            <xs:sequence>
               <xs:element name="BoltDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the bolt in a nominal way.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltHeight" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p> Specifies the height of the bolt (the height of the part to which ring terminals can be attached).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltNominalSize"
                           type="vec:TerminalBoltNominalSize"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the size (diameter) of the bolt in a nominal way (e.g. "M8").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltType" type="vec:TerminalBoltType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the bolt.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TorsionProtection" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the bolt provides torsion protected or not.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaxTerminalCount" type="xs:integer" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p> Defines the maximum number of (ring) terminals that can be attached to this bolt at the same time.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BooleanValueProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with a boolean value.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="xs:boolean">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the CustomProperty.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BoundingBox">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The bounding box is used to define a cuboid (box) that can contain a described part completely. Therefore, it is a simplified representation of the bounding volume and represents a definition of the maximum volume occupied by the part.</p>
            <p>It is valid to use the<i>BoundingBox</i>to describe the dimensions of a component, even if not all dimensions are known (e.g. only length and width). However, it must be possible to transform such a partial bounding box into a complete bounding box by adding the missing dimensions.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="X" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the extent of the bounding box in the direction of x<i/>(length).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Y" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the extent of the bounding box in the direction of y<i/>(width).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Z" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the extent of the bounding box in the direction of<i>z</i>(height).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="BridgeTerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>BridgeTerminalRole</i>defines the instance specific properties and relationships of a bridge terminal (see BridgeTerminalSpecification).</p>
            <p>A bridge terminal is a part that behaves like terminal but has no<i>WireReceptions.</i>It is used to create short circuit between different pins in a connector. In its use, it can realize a schematic connection on its own and independently of other components.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalRole">
            <xs:sequence>
               <xs:element name="Connection" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>Connection</i>that is realized by this<i>BridgeTerminalRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BridgeTerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A bridge terminal is a part that behaves like terminal but has no<i>WireReceptions.</i>It is used to create short circuit between different pins in a connector. In its use, it can realize a schematic connection on its own and independently of other components.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalSpecification"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BuildingBlockPositioning2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the position of a BuildingBlock2D on a HarnessDrawing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique (optional) identification of the BuildingBlockPositioning2D. The identification is guaranteed to be unique within the HarnessDrawingSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Referenced2DBuildingBlock" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the building block which is placed on the harness drawing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CenterPoint" type="vec:CartesianPoint2D" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the center point of the BuildingBlock in the coordinate system of the harness drawing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BuildingBlockPositioning3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the position of a BuildingBlock3D in the HarnessGeometry.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique (optional) identification of the BuildingBlockPositioning3D. The identification is guaranteed to be unique within the HarnessGeometrySpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Referenced3DBuildingBlock" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the building block that is positioned.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Positioning" type="vec:Transformation3D" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the positioning of the building block in the harness geometry.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BuildingBlockSpecification2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of a two-dimensional building block. A building block is a reusable section of a geometry.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="BaseUnit" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoundingBox" type="vec:CartesianDimension">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the size of the area described by the BuildingBlockSpecification2D in Cartesian dimensions.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CartesianPoint"
                           type="vec:CartesianPoint2D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the CartesianPoint2Ds that are used in the BuildingBlockSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GeometryNode"
                           type="vec:GeometryNode2D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the GeometryNode2Ds defined by the BuildingBlockSpecification2D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GeometrySegment"
                           type="vec:GeometrySegment2D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the GeometrySegment2Ds defined by the BuildingBlockSpecification2D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacedElementViewItem"
                           type="vec:OccurrenceOrUsageViewItem2D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the view items for OccurrenceOrUsages on a BuildingBlockSpecification2D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BuildingBlockSpecification3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of a three-dimensional building block. A building block is a reusable section of a geometry.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="BaseUnit" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TopologyZone" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the Zone that is building block represents. This shall be a TopologyZone with the type "DmuZone".</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CartesianPoint"
                           type="vec:CartesianPoint3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the CartesianPoint3Ds that are used in the BuildingBlockSpecification3D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GeometryNode"
                           type="vec:GeometryNode3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the GeometryNode3Ds defined by the BuildingBlockSpecification3D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GeometrySegment"
                           type="vec:GeometrySegment3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the GeometrySegment3Ds defined by the BuildingBlockSpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacedElementViewItem3D"
                           type="vec:OccurrenceOrUsageViewItem3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the view items for OccurrenceOrUsages in a BuildingBlockSpecification3D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableDuctOutlet">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies one outlet of the cable duct.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the identification of the Outlet. This must be unique within a CableDuctSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PlacementPoint</i>that represents this<i>CableDuctOutlet</i>in a PlaceableElementSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableDuctRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CableDuctRole</i>defines the instance specific properties and relationships of a cable duct.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="CableDuctSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>CableDuctSpecification</i>that is instanced by this<i>CableDuctRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableDuctSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for cable ducts. A cable duct can have one or more outlets.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="Outlet"
                           type="vec:CableDuctOutlet"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableLeadThrough">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CableLeadThrough</i>specifies a hole in the grommet through which wires can pass through the grommet. There can be different technical realizations of a lead through, e.g. it can be realized with a shrinking material or an additional seal. The properties of a<i>CableLeadThrough</i>are defined in the referenced<i>CableLeadThroughSpecification</i>.</p>
            <p>For a precise placement in topology, a<i>CableLeadThrough</i>specifies outlets.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the identification of the CableLeadThrough. This must be unique within a GrommetSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CableLeadThroughSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>CableLeadThroughSpecification</i>that defines the technical properties of this<i>CableLeadThrough.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Outlet"
                           type="vec:CableLeadThroughOutlet"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>CableLeadThrough.</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableLeadThroughOutlet">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>CableLeadThrough</i>
            <i>CableLeadThroughs</i>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the identification of the<i>CableLe</i>adThroughOutlet. This must be unique within a<i>CableLeadThrough</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="PlacementPoint" type="xs:IDREF" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the<i>PlacementPoint</i>that represents this<i>CableLeadThroughOutlet</i>in a PlaceableElementSpecification.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CableLeadThroughReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CableLeadThroughReference</i>is the instance of a CableLeadThrough. It can define a set of plugs or seals that are used together with it. Plugs are used if no wire is present, seals are used together with a wire.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique identification of the CableLeadThroughReference. The identification is guaranteed to be unique within the GrommetRole.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CableLeadThrough" type="xs:IDREF" minOccurs="0"/>
         <xs:element name="UsedPlugs" type="xs:IDREFS" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>References the plugs that are used with this CableLeadThroughReference. This association might be a 150% selection.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="UsedSeals" type="xs:IDREFS" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en"/>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CableLeadThroughSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CableLeadThrough</i>specifies a hole in the grommet through which wires can pass through the grommet. The<i>CableLeadThroughSpecification</i>defines the technical properties of a<i>CableLeadThrough</i>(or a set of similar ones).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Type" type="vec:CableLeadThroughType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the type of a cable lead through. Standardized values are defined in an<i>OpenEnumeration</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Geometry" type="vec:CableLeadThroughGeometry" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the geometry of a cable lead through in the sealing area. Standardized values are defined in an<i>OpenEnumeration</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SealingDimension" type="vec:Size" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the dimension of the cable lead through in the sealing area.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MinSegmentOutsideDiameter"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the minimum diameter a segment can have to fit through the cable lead through. This definition is necessary, since segments that are too small might cause movements and unacceptable torsion forces or they are not sealable.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaxSegmentOutsideDiameter"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum diameter a segment can have to fit into the cable lead through.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Sealable" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the cable lead through is sealable.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableTieRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CableTieRole</i>defines the instance specific properties and relationships of a cable tie.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="CableTieSpecification" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CableTieSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of cable ties.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="Length" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Width" type="vec:NumericalValue" minOccurs="0"/>
               <xs:element name="Thickness" type="vec:NumericalValue" minOccurs="0"/>
               <xs:element name="TensioningStrength" type="vec:NumericalValue" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CapacitorSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of the electrological aspects of a capacitor. </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="Capacity" type="vec:NumericalValue" minOccurs="0"/>
               <xs:element name="Impedance" type="vec:NumericalValue" minOccurs="0"/>
               <xs:element name="UMax" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p> The breakdown voltage of the capacitor.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CartesianDimension">
      <xs:annotation>
         <xs:documentation xml:lang="en">The CartesianDimension specifies the size of an object in 2D-space.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Height" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the height of the object. The unit of this value is the baseUnit of containing BuildingBlockSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Width" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the width of the object. The unit of this value is the baseUnit of containing BuildingBlockSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CartesianPoint2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CartesianPoint2D is a point that is defined by its coordinates in a rectangular two-dimensional Cartesian coordinate system.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="X" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of x-coordinate of the Cartesian point. The unit of this value is the baseUnit of containing BuildingBlockSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Y" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of y-coordinate of the Cartesian point. The unit of this value is the baseUnit of containing BuildingBlockSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CartesianPoint3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CartesianPoint3D is a point that is defined by its coordinates in a rectangular three-dimensional Cartesian coordinate system.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="X" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of x-coordinate of the Cartesian point. The unit of this value is the baseUnit of containing BuildingBlockSpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Y" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of y-coordinate of the Cartesian point. The unit of this value is the baseUnit of containing BuildingBlockSpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Z" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of z-coordinate of the Cartesian point. The unit of this value is the baseUnit of containing BuildingBlockSpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CartesianVector" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract super class for vectors, either 2D or 3D.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CartesianVector2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Cartesian vector in the two-dimensional space.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CartesianVector">
            <xs:sequence>
               <xs:element name="X" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the x-coordinate in 2D space.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Y" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the y-coordinate in 2D space.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CartesianVector3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Cartesian vector in three-dimensional space.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CartesianVector">
            <xs:sequence>
               <xs:element name="X" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the x-coordinate in 3D space.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Y" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the y-coordinate in 3D space.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Z" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the z-coordinate in 3D space.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Cavity">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A cavity is a defined space in a connector housing for location of an electrical terminal or cavity plug or seal. A cavity may also be empty.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Available" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines whether the cavity is available for contacting. If the cavity is not available, it means that it is completely closed.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavityNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Provides an identifier for the cavity. The cavity number needs to be unique within a<i>Slot</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HasIntegratedTerminal" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines whether the cavity has an integrated terminal (for example an IDC cavity) or if an additional terminal is required.</p>
                        <p>If this attribute is "true", the cavity can reference a<i>TerminalSpecification</i>as<i>integratedTerminalSpecification</i>in order to specify the integrated terminal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavitySpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the CavitySpecification that is satisfied by the cavity.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IntegratedTerminalSpecification"
                           type="xs:IDREF"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the terminal, if the cavity has an integrated terminal (e.g. an IDC).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PositionDetail" type="vec:CavityPositionDetail" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityAccessoryRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CavityAccessoryRole</i>defines the instance specific properties and relationships of a cavity accessory.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="CavityAccessorySpecification" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityAccessorySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CavityAccessory</i>is a non-electrical part used in a cavity with no sealing properties (e.g. a wire fixation).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CavityPartSpecification">
            <xs:sequence>
               <xs:element name="WireElementOutsideDiameter"
                           type="vec:ValueRange"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a range of valid wire diameters to which the cavity accessory fits.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReceptionType" type="vec:WireReceptionType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the wireReceptionType to which the cavity accessory fits.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityAddOn">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the wire addon needed to reach a<i>Cavity</i>from a specific<i>SegmentConnectionPoint</i>. More specifically, it is the addon required to calculate the cutting length of a wire. It is not a measured distance between the segment connection point and the insertion point of the cavity. For each<i>SegmentConnectionPoint</i>there shall be no more than one add-on value per cavity and type.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="WireAddOn" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the wire length add on needed for the cavity.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Type" type="vec:WireAddOnType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the type of the add-on (see<i>CavityAddOn</i>).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Cavity" type="xs:IDREF"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CavityCoupling">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CavityCoupling</i>defines the mapping between two cavities of the<i>ConnectorHousingRoles</i>associated with the<i>CouplingPoint</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0"/>
               <xs:element name="FirstCavity" type="xs:IDREF"/>
               <xs:element name="SecondCavity" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityMapping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the mapping of two cavities contained Slot A &amp; B of the containing SlotMapping-object.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="IdentificationA" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the Cavity on side A</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="IdentificationB" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the Cavity on side B</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CavityMounting">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CavityMounting defines the cavities (CavityReference) where the contacted elements (Terminal) will be mounted.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CavityAccessory" type="xs:IDREFS" minOccurs="0"/>
               <xs:element name="EquippedCavityRef" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the cavities that are used for the cavity mounting.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReplacedPlug" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the cavity plugs that are obsolete if the cavity mounting is realized.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavityMountingDetail"
                           type="vec:CavityMountingDetail"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the CavityMoutingDetails, if a detailed description of the relationships between Cavities and TerminalReceptions is needed.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityMountingDetail">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>With a CavityMountingDetail it is possible to describe a detailed cavity mounting.</p>
            <p>This is needed if the information which terminal reception is mounted into which cavity is important. There are cases where this information can be relevant (e.g. bridge contacts with an asymmetric wire mounting).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="EquippedCavityRef" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the cavity that is used for the detailed description of the cavity mounting.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalReceptionReference" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TerminalReception that is used for the detailed description of the cavity mounting.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityPartSpecification" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>CavityPartSpecification</i>is an abstract class for common properties of non-electrical parts that are used in<i>Cavities</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="CavityDimension"
                           type="vec:Size"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a valid cavity dimensions to which the cavity part fits. The dimension defines the size of the sealing area of the cavity (crimp end), not in the contacting area (box end).</p>
                        <p>Note: CavityDimension is of type Size which is defined as x &amp; y with type NumericalValue. NumericalValue can define tolerances. So, a cavity dimension is not necessarily a single fixed value.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Hardness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the hardness of the cavity seal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Geometry" type="vec:SealingGeometry" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the geometry of the cavity sealing.</p>
                        <p> </p>
                        <p>This attribute is defined as an OpenEnumeration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompatibleTerminalType"
                           type="vec:TerminalType"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a list of terminal types that are compatible to this CavitySealSpecification. This defines as well the compatible cavities, since a plug is normally used when no terminals are present.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompatibleCavityGeometry"
                           type="vec:CavityGeometry"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a list of<i>CavityGeometries</i>that are compatible with this cavity part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityPlugRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CavityPlugRole defines the instance specific properties and relationships of a cavity plug.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="CavityPlugSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>CavityPlugSpecification</i>that is instanced by this<i>CavityPlugRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PluggedCavityRef" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Defines which cavity / cavities in a connector instance is sealed by the plug.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityPlugSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of cavity seals. A cavity plug is a watertight non-electrical object to fill an empty cavity.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CavityPartSpecification"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavityPositionDetail">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>CavityPositionDetail</i>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Rotation" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The rotation of the cavity is defined as the angle between the primary locking of the cavity and the Y-axis of the connector housing coordinate system.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CavitySealingOffset" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>insertionPosition</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="BaseUnit" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The<i>Unit</i>in which all coordinates (e.g. cartesian points) of this<i>CavityPositionDetail </i>are defined. Shall be a unit of length (e.g. millimetre).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="InsertionPosition" type="vec:CartesianPoint3D" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The position of the center of the cavity in the entrance surface of the connector during the insertion process.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="InsertionVector" type="vec:CartesianVector3D" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>InsertionPosition</i>
                  <i>InsertionPostion</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CavityReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CavityReference represents the usage of a Cavity in the context of PartUsage or PartOccurrence.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the CavityReference. The identification is guaranteed to be unique within the ConnectorHousingRole. The cavity &amp; slot number is defined by the associated cavity and slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentPort" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>ComponentPort</i>that is implemented by this<i>CavityReference</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedCavity" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Points to the cavity referenced by the cavity reference.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IntegratedTerminalRole" type="vec:TerminalRole" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Contains the terminal role if the cavity has an integrated terminal (e.g. an IDC).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavitySealRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CavitySealRole defines the instance specific properties and relationships of a cavity seal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="CavitySealSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>CavitySealSpecification</i>that is instanced by this<i>CavitySealRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavitySealSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of cavity seals. A<i>CavitySeal</i>is a watertight non-electrical object to fill a populated Cavity.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CavityPartSpecification">
            <xs:sequence>
               <xs:element name="WireElementOutsideDiameter"
                           type="vec:ValueRange"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a range of valid wire diameters to which the cavity seal fits.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReceptionType" type="vec:WireReceptionType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the wireReceptionType to which the cavity seal fits.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InsideDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the inside diameter in the relaxed state for a cavity seal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CavitySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of cavities.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Angle"
                           type="vec:NumericalValue"
                           minOccurs="0"
                           maxOccurs="2">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the angle against two planes of the connector housing a terminal used in this cavity can be buckled.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavityDesign" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Deprecated (since Version 1.1.4): This attribute has been marked as deprecated, as it has been replaced by the more meaningful mechanism with<i>TerminalTypes.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Geometry" type="vec:CavityGeometry" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the geometry of a cavity in the sealing area (crimp end).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavityDimension" type="vec:Size" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the dimension of the cavity in the sealing area of the cavity (crimp end), not in the contacting area (box end).</p>
                        <p>The<i>Height</i>of a cavity is defined as the dimension of cavity in the direction of the primary locking. The<i>Width</i>is the dimension orthogonal to the<i>Height.</i>
                        </p>
                        <p>For cavities with<i>Geometry = Circular</i>the<i>Size.Width</i>shall be equal to<i>Size.Height.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MinWireElementOutsideDiameter"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the minimum diameter a wire is allowed to have to fit into the cavity. This definition is necessary, since wires that are too small might cause movements and in acceptable torsion forces on terminals.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaxWireElementOutsideDiameter"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum diameter a wire is allowed to have to fit into the cavity.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PrimaryLockingType"
                           type="vec:PrimaryLockingType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the cavity has a primary locking and of what type it is.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Sealable" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the cavity is sealable.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompatibleTerminalType"
                           type="vec:TerminalType"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a list of terminal types that are compatible to this CavitySpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavitySealingLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ChangeDescription">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ChangeDescription describes the implemented issues that are reason for the aggregating ItemVersion to be either an initial or successor version. A ChangeDescription can optionally define the person who has approved the change.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies an identifier for the ChangeDescription. This can be the ID of a change order or an ID which indicates model upgrading. (see KBLFRM-249)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Label" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the label of the change on a drawing for example. If more than one change is issued with one ItemVersion (e.g. change 0001, 0002), in some cases the different changes are labelled on the drawing (e.g. A, B, C).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable, information about the ChangeDescription.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Approver" type="vec:Person" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the person who has approved the change.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ChangeDate" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the date when the change was performed.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ResponsibleDesigner" type="vec:Person" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the design engineer who is/was responsible to perform the change.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RelatedChangeRequest"
                           type="xs:string"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the identification of a corresponding change request. (see KBLFRM-249)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Coding">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the coding of a slot or a connector housing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Coding" type="vec:CodingName">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the coding.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Color">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a color value. A color is always defined by a key value. What color is meant by this key value is defined by a standard reference system (e.g. RAL).</p>
            <p>For example, if a RAL color should be expressed in the terms of the VEC the<i>referenceSystem</i>would be "RAL", the<i>key</i>would be the RAL number defined by the standard (e.g. "1003" for signal yellow).</p>
            <p>Attributes of the type Color normally have the multiplicity [0..*]. This means that such an attribute can have a value for different referenceSystems (e.g. RAL, RGB,...). It must not have multiple values for the same ReferenceSystem.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Key" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The key of the color in the corresponding color reference system.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ReferenceSystem" type="vec:ColorReferenceSystem">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the color reference system, which is defining possible values and the semantic of color keys. (see KBLFRM-315). For common color reference systems the literals defined in the open enumeration<i>ColorReferenceSystem</i>shall be used.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:LocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>On optional human readable description of the color (e.g. the name).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ComplexProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property that represents a tuple of values.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="CustomProperty"
                           type="vec:CustomProperty"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The customProperties that represent the individual values of the complex property.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ComponentConnector">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>ComponentConnector</i>is a grouping of<i>ComponentPorts</i>and represents a logical abstraction of a connector of an<i>EEComponent</i>. When the<i>ComponentNode</i>is realized by an<i>EEComponentRole</i>the<i>ComponentConnector</i>will result in a<i>HousingComponent.</i>
            </p>
            <p>It is permitted that a<i>ComponentConnector</i>is a 150% definition of connector.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies a unique identification of the ComponentConnector. The identification is guaranteed to be unique within the ComponentNode.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="ComponentPort"
                           type="vec:ComponentPort"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ComponentPorts of the ComponentConnector.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ComponentNode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ComponentNode is a node where an electrological component is located. It is a representative for an element in the electric system, e.g. an actuator, a sensor, an ECU. In this way it is quite similar to a NetworkNode and may even reference the corresponding NetworkNode in this case. However, a ComponentNode is more likely to be used as a representative of an inliner or a splice. Moreover, a ComponentNode can define childNodes in order to describe its internal structure.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ComponentNode. The identification is guaranteed to be unique within the ConnectionSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Abbreviation"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for a short name of the ComponentNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentNodeType" type="vec:ComponentNodeType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the ComponentNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the ComponentNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubType" type="vec:ComponentNodeSubType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the sub type of a ComponentNode. The sub type allows a differentiation within a specific type. E.g. an actuator can be differentiated into lamps, speakers, motors. </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetworkNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the NetworkNode that is realized by the ComponentNode.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RealizedUsageNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>UsageNode</i>that is realized by this<i>ComponentNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ChildNode"
                           type="vec:ComponentNode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ComponentNodes that are a child of this ComponentNode.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentConnector"
                           type="vec:ComponentConnector"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ComponentConnectors of a ComponentNode.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ComponentPort">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines a port of ComponentNode. A ComponentPort is usually the realization of a NetworkPort. Electrological connections are defined between two or more ComponentPorts.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ComponentPort. The identification is guaranteed to be unique within the ComponentConnector.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalDirection" type="vec:SignalDirection" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the direction of the signal on this ComponentPort.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the ComponentPort.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetworkPort" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the NetworkPort that is realized by the ComponentPort.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Signal" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>Signal</i>that is associated with the<i>ComponentPort</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ComponentPortViewItem">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>ComponentPortViewItem</i>
            <i/>
            <i>ComponentPort</i>
            <i>ComponentNodeViewItem</i>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Side" type="vec:ComponentPortViewItemSide" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>ComponentNodeViewItem</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ComponentPort" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>ComponentPort</i>
                  <i>ComponentPortViewItem</i>
                  <i>.</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CompositeUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines a unit as a composition of other units. The composition is done by multiplying the different other units. By this way combined units like kg/m can be formed.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="Factors" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>Units</i>that are used as factors to create the<i>CompositeUnit.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CompositionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The CompositionSpecificiation is used to define a set of occurrences required to describe unambiguously the design of a composite part. This does not have to be necessarily the same occurrences which are building the bill of material. Example: A company might want to regard an antenna cable as one part out of a bill of material perspective. However, at the same time it may be useful for the company to be able to describe the contacting of the antenna cable within the VEC. (see also PartStructureSpecification)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Component"
                           type="vec:PartOccurrence"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the PartOccurrences defined in the CompositionSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConductorCurrentInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>ConductorCurrentInformation</i>specifies the maximum current for which a conductor is approved. As the maximum current is dependent from the voltage and the environment temperature it is modelled as a class and not only as an attribute.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="MaxCurrent" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The maximum current value.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="EnvironmentTemperature" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The environment temperature for which this maximum current value is applicable.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Voltage" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The voltage for which this maximum current value is applicable.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ConductorMaterial">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>
               <i>ConductorMaterial</i>is a helper class to specify<i>validConductorMaterials.</i>This is necessary, since all attributes of the type<i>Material</i>have a multiplicity of * with the semantics that it always defines<u>one</u>
               <i>Material</i>with the possibility to define it in different reference systems.</p>
            <p>Since a wire reception can have more than one<i>validConductorMaterial</i>this container class is necessary to keep the semantics clear.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Material" type="vec:Material" maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the material.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ConductorSpecification" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of conducting properties of a WireElement.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="CrossSectionArea" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the cross-section area of the conductor (e.g. 0,5 mm²). The cross-section area is a nominal value, which refers to the conducting properties of the conductor normalized to the properties of a full material core.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MassInformation" type="vec:MassInformation" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the mass information of the conductor. In most cases this mass information is known as copper weight and is normally specified as mass per length (e.g. gram per meter).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Material"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the material of the conductor.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Resistance" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the electrical resistance of the conductor. In most cases this is specified as resistance per length (e.g. Ohm per meter).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Structure" type="vec:ConductorStructure" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the structure of the conductor according to ISO 6722-1 for ConductorSpecifications with Type = Stranded.</p>
                        <p>
                           <i>Should only be used for ConductorSpecifications with type=Stranded.</i>
                        </p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Type" type="vec:ConductorType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the conductor, e.g. if it is rigid or stranded.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NumberOfStrands" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the number of strands in one conductor. If the conductor is solid than the number of strands would be one.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlatingMaterial"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the plating material of the conductor.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="StrandDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of a single strand in the conductor.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="VoltageRange" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the voltageRange for which the conductor is approved.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CurrentInformation"
                           type="vec:ConductorCurrentInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the current information of the conductor. These are the maximum currents for which the conductor is approved.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConfigurableElement" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract base class for all elements which can be configured with a VariantConfiguration.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="ApplicationConstraint" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>
                           <i>Deprecated since VEC V2.0.0. Use ConfigurationConstraints instead.</i>
                        </p>
                        <p>References the application constraints that apply to the ConfigurableElement.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AssociatedAssignmentGroups" type="xs:IDREFS" minOccurs="0"/>
               <xs:element name="ConfigInfo" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>
                           <i>Deprecated since VEC V2.0.0. Use ConfigurationConstraints instead.</i>
                        </p>
                        <p>References the configuration information that applies to the ConfigurableElement.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConfigurationConstraint"
                           type="vec:ConfigurationConstraint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Contains or more<i>ConfigurationContraints</i>that apply to this<i>ConfigurableElement.</i>This is explained in more details in the recommendation chapter / model diagram "Variants".</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConfigurationConstraint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Represents a<i>ConfigurationContraint</i>("When does this element exist?") for a specific application (<i>ApplicationConstraint)</i>and a "configuration universe" (<i>VariantConfiguration.configurationType</i>)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the<i>ConfigurationConstraint</i>. The identification is guaranteed to be unique within the<i>ConfigurableElement</i>and does not change over the time.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ApplicationConstraint" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the application constraint that applies to the ConfigurationConstraint.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConfigInfo" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the configuration information that applies to the ConfigurationConstraint.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Connection">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Connection is an electrological connection between two or more ComponentPorts.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:RoutableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Connection. The identification is guaranteed to be unique within the ConnectionSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the Connection.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstallationInstruction"
                           type="vec:Instruction"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies installation instruction for the connection.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Net" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Net that is realized by the Connection.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Signal" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the signal that is transmitted by the connection.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionEnd"
                           type="vec:ConnectionEnd"
                           minOccurs="2"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ConnectionEnds of the Connection.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectionEnd">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A connection end is the end of a Connection at a ComponentPort.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ConnectionEnd. The identification is guaranteed to be unique within the ConnectionSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IsExternalEnd" type="xs:boolean">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the ConnectionEnd is connected to the internal or the external side of the ComponentPort.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Gender" type="vec:ConnectionEndGender" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the ConnectionEnd is male or female. This may be e.g. important in case of an inliner.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstallationInstruction"
                           type="vec:Instruction"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies installation instruction for the<i>ConnectionEnd</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectedComponentPort" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ComponentPort that is connected by the ConnectionEnd.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectionGroup">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ConnectionGroup references two or more Connections expressing that the physical realization of the referenced Connection shall be somehow grouped e.g. twisted. For complex structures a ConnectionGroup can specify subgroups.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ConnectionGroup. The identification is guaranteed to be unique within the ConnectionSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionGroupType" type="vec:ConnectionGroupType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the connectionGroup, valid literals are defined in the open enumeration<i>ConnectionGroupType</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstallationInstruction"
                           type="vec:Instruction"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional InstallationInstructions for the ConnectionGroup.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the ConnectionGroup.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Connection" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Connections that are grouped by the ConnectionGroup.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubGroup"
                           type="vec:ConnectionGroup"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ConnectionGroups that are a subgroup of this ConnectionGroup.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectionNodeViewItem">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>ComponentNodeViewItem</i>
            <i>ComponentNode</i>
            <i>ConnectionViewSpecification</i>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique identification of the<i>ComponentNodeViewItem</i>. The identification is guaranteed to be unique within the<i>ConnectionViewSpecification</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="GridSquare" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the grid square in which the<i>ComponentNodeViewIt</i>
                     <i>em</i>is placed (e.g. E/40).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ComponentNode" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>ComponentNode</i>
                  <i>ComponentNodeViewItem</i>
                  <i>.</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="DisplayedPort"
                     type="vec:ComponentPortViewItem"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies all<i>ComponentPortViewItems</i>that are displayed on this<i>ComponentNodeViewItem</i>
                     <i>.</i>The order of this association defines the clockwise arrangement of the ports on the node. As each<i>ComponentPortViewItem</i>can also define the side on which it is placed, side definitions take precedence over order.</p>
                  <p>
                     <i> </i>
                  </p>
                  <p>
                     <b>Caution:</b>This association is<u>ordered</u>!</p>
                  <p>
                     <i> </i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Orientation" type="vec:Transformation2D" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>ConnectionNodeViewItem</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ConnectionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ConnectionSpecification is used to define electrological connectivity.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="ComponentNode"
                           type="vec:ComponentNode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ComponentNodes defined by the ConnectionSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Connection"
                           type="vec:Connection"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Connection defined by the ConnectionSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionGroup"
                           type="vec:ConnectionGroup"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ConnectionGroup defined by the ConnectionSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectionViewSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>ConnectionViewSpecification</i>supports the exchange of a basic layout for a<i>ConnectionSpecification</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="CartesianPoint"
                           type="vec:CartesianPoint2D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>CartesianPoint2Ds</i>
                        <i>ConnectionViewSpecification</i>
                        <i>.</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacedViewItems"
                           type="vec:ConnectionNodeViewItem"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>ComponentNodeViewItems</i>
                        <i>ConnectionViewSpecification</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectorHousingCapRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A <i>ConnectorHousingCapRole</i>defines the instance-specific properties of a cap for a connector (backshells).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="ConnectorHousingCapSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>ConnectorHousingCapSpecification</i>that is instanced by this<i>ConnectorHousingCapRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectorHousingCapSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of caps (backshells) of connectors. Different caps can add additional wire length addons to a connector housing.</p>
            <p>A 'cap' which already defines the number of cavities, coding etc. is in the VEC defined by<i>ConnectorHousingSpecification</i>with<i>ModularSlots</i>and not by a<i>ConnectorHousingCapSpecification</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="WireAddOn" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the wire length add on needed for the cap.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OutletDirection"
                           type="vec:ConnectorOutletDirection"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>OutletDirection</i>for wires.</p>
                        <p>This attribute is defined as an<i>OpenEnumeration</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectorHousingRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ConnectorHousingRole defines the instance specific properties and relationships of a connector housing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="SealState" type="vec:SealState" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if this instance of a connector housing should be sealed (waterproof).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentConnector" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the ComponentConnector that is realized by the referenced ConnectorHousing (OccurrenceOrUsage with ConnectorHousingRole). This can especially be relevant for inliners. KBLFRM-341.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectorHousingSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>ConnectorHousingSpecification</i>that is instanced by this<i>ConnectorHousingRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SlotReference"
                           type="vec:AbstractSlotReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the SlotReferences used in the ConnectorHousingRole.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ConnectorHousingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of connector housings. A connector housing consists of a one or more slots. In the means of the VEC, a connector housing can be a conventional connector housing, a contact module or a connector shell.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="AverageWireLengthAddOn"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the average wire length add on for this connector.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="VoltageRange" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the allowed voltage range for the connector housing.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Coupleable" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines whether the connector is coupleable or not. Connectors that are coupleable can be used in an inline position. Connectors that are not coupleable can be connected only to an ECU or something similar.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectorPositionAssurance" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If<i>true</i>the<i>ConnectorHousing</i>has a connector position assurance (CPA).</p>
                        <p>A CPA is some sort of feature of a connector, that secures the connector in its correctly assembled position with its mating part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OutletDirection"
                           type="vec:ConnectorOutletDirection"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>OutletDirection</i>for wires.</p>
                        <p>This attribute is defined as an<i>OpenEnumeration</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Coding" type="vec:Coding" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Defines coding of the connector housing that is satisfied by the connector housing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SegmentConnectionPoint"
                           type="vec:SegmentConnectionPoint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>SegmentConnectionPoints</i>the connector housing.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Slot"
                           type="vec:AbstractSlot"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the slots forming the ConnectorHousing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ContactPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A contact point defines the relationship between Terminals, Seals, Plugs, Cavities and Wires. It specifies a single contacting variant. This means that the contacting is manufactured, as specified by the<i>Contact</i>Point. Either all participants (Cavities, Terminals, Seals, Wires) set into a relationship by the<i>ContactPoint</i>exist in a specific harness or none. There is no requirement, to filter the participants of a contacting situation with information derived from VariantConfigurations or assembly / module associations in order to create a manufacturing variant.</p>
            <p>The<i>ContactPoint</i>represents a single potential. Consequently, all cavities and wires referencing / being referenced by a<i>ContactPoint</i>are short-circuited and have the same potential (even if the signals on the wires are named differently. If a contacting of a terminal has more than one potential (e.g. a coax-contact) one contact point for each potential is needed.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ContactPoint. The identification is guaranteed to be unique within the ContactingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MountedTerminal" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the terminal that is used for contacting defined by the ContactPoint.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavityMounting"
                           type="vec:CavityMounting"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Defines the mounting to a cavity of the terminal associated with the ContactPoint. The cardinality is 0..* in order to allow a variant dependant cavity mounting. In such a scenario a cavity mounting is valid in a configuration if all addressed cavities and therefore the associated connector housing is available.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireMounting"
                           type="vec:WireMounting"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the WireMouting defined by ContactPoint. More than one WireMounting is allowed in order to support variance. In concrete configuration the WireMounting with all referenced elements present is used.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ContactingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">Specification for the description of the contacting. A contacting defines the relationships between Terminals, Seals, Plugs, Cavities and Wires.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="ContactPoint"
                           type="vec:ContactPoint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ContactPoints defined by the ContactingSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Contract">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Contract-instance describes the relationship between an ItemVersion-instance and a Company-instance additionally defining the role the company takes in reference to the ItemVersion.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CompanyName" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the company which acts in the specified Role in the Contract Relationship.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ContractRole" type="vec:ContractRole">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The role the company takes in reference to the associated ItemVersion. Predefined are the values: OEM, Supplier and Manufacturer.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CopyrightInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CopyrightInformation-instance specifies copyright information for one or more Items.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CopyrightNote"
                           type="vec:LocalizedString"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>An informal text which specifies copyright information.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CoreSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the properties of a circular conductor (core) which are specific for them.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConductorSpecification">
            <xs:sequence>
               <xs:element name="OutsideDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the outside diameter of the core.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CorrugatedPipeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of corrugated pipes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TubeSpecification">
            <xs:sequence>
               <xs:element name="CorrugationHeight" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the height of a corrugation of the pipe.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CorrugationWidth" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the width of a corrugation of the pipe.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CorrugationGradient" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the gradient of a corrugation of the pipe.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CouplingPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>CouplingPoint</i>defines a single coupling. If a coupling takes place, all sub elements are connected. If the coupling is disconnected, all subelements are disconnected.</p>
            <p>If a coupling occurs between two connectors, and not just between two terminals, the<i>CouplingPoint</i>references the respective<i>ConnectorHousingRoles</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0"/>
               <xs:element name="FirstConnector" type="xs:IDREF" minOccurs="0"/>
               <xs:element name="SecondConnector" type="xs:IDREF" minOccurs="0"/>
               <xs:element name="MatingPoint"
                           type="vec:MatingPoint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>MatingPoints</i>defined within the<i>CouplingPoint</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SlotCoupling"
                           type="vec:SlotCoupling"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CouplingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of a Coupling. A coupling allows the mapping between independent harness sections or EEComponents of the electrical system. This is done by the mapping of either-or both, ConnectorHousingRoles &amp; TerminalRoles of one side to the other.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="CouplingPoint"
                           type="vec:CouplingPoint"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Creation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Creation-instance provides additional information to the owning ItemVersion stating personal information on the creator and the creation date.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CreationDate" type="xs:dateTime">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the date when the associated ItemVersion was created. (see KBLFRM-241)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Creator" type="vec:Person" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the person who has created the Item.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ResponsibleDesigner" type="vec:Person" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the person, which is the responsible designer for the ItemVersion at the point of creation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Curve3D" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>Curve3D</i>is an abstract representation of a curve, that defines the three-dimensional appearance of the centreline of a segment. The concrete type of the curve (e.g. NURBSCurve) defines the mathematical function that applies to curve and stores the required parameter set for this function in the VEC.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CustomProperty" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract base class for custom properties. Basically, a custom property is key / value pair. The key (propertyType) defines the meaning of the value. A custom property can either be a simple value (string), a numerical value or a value range.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="PropertyType" type="xs:string"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="CustomUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A CustomUnit can be used to define "FreeText"-Units. Custom units must not be used for units that can be expressed by any of the other subclasses of Unit. Custom units are only allowed if a unit is needed that cannot be handled by any of the other classes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>A unique identification of the custom unit.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DateValueProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with a date value.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="xs:dateTime">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the CustomProperty.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DefaultDimension">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>DefaultDimension</i>defines a tolerance value that shall be applied to a part, if no explicit tolerance value has been defined.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="DimensionValueRange" type="vec:ValueRange">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>dimensionValueRange defines the magnitude of measurements for which the tolerance applies (e.g. length from 500mm - 1500mm).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="DimensionType" type="vec:DefaultDimensionType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The<i>dimensionType</i>defines to which measurements this<i>DefaultDimension</i>applies.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ToleranceIndication" type="vec:Tolerance"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="DefaultDimensionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>DefaultDimensionSpecification</i>defines tolerances that shall be applied to a part, if no explicit tolerance value has been defined.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="DefaultDimension"
                           type="vec:DefaultDimension"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Dimension">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Dimension defines a measurement for the distance between two Locations. An acceptable tolerance can be specified additionally. If the Locations are not located on adjacent topology-elements it is possible to specify a Path for the dimension along which the measurement must be taken.</p>
            <p>The value for the Dimension is not specified as NumericalValue (which can define a Tolerance as well). This is because the "valueComponent" of the NumericalValue is mandatory. For Dimensions it shall be optional since there are scenarios where the dimension only specifies a Tolerance for a distance defined by the topology (segment length + placement information).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Dimension. The identification is guaranteed to be unique within the containing PlacementSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ValueComponent" type="xs:double" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the dimension. This value can be null, if it shall be calculated and only a tolerance shall be defined.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ValueCalculated" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines if the value of the<i>Dimension</i>was calculated (e.g. the sum of segment lengths in the topology) or if it was defined manually.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DimensionAnchor" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the location that is used as dimension point for the dimensioning (e.g. the entry point of a bundle into a connector housing).</p>
                        <p>See KBLFRM-329 and KBLFRM-391.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferenceAnchor" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the location that is used as reference point for the dimensioning (e.g. the location of a fixing as this relates to a fixpoint of the body in white).</p>
                        <p>See KBLFRM-329 and KBLFRM-391.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UnitComponent" type="xs:IDREF"/>
               <xs:element name="DefinedLocations"
                           type="vec:Location"
                           minOccurs="0"
                           maxOccurs="2">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Path" type="vec:Path" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies a path in the topology along which the dimension is defined.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Tolerance" type="vec:Tolerance" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DimensionAnchor" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>DimensionAnchor</i>represents an abstract anchor onto which a<i>Dimension</i>can be specified.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DiodeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of the electrological aspects of a diode.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="ThresholdVoltage" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Voltage at which the diode starts conducting in forward direction.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BreakDownVoltage" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Voltage at which the diode starts conducting in reverse direction.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IMax" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum electric current tolerated by the diode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Anode" type="xs:IDREF" minOccurs="0"/>
               <xs:element name="Cathode" type="xs:IDREF" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DocumentBasedInstruction">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A DocumentBasedInstruction is an Instruction to a SheetOrChapter in a DocumentVersion or to a complete DocumentVersion.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Instruction">
            <xs:sequence>
               <xs:element name="ReferencedDocument" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the DocumentVersion that is used as an Instruction.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedSheetOrChapter" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the SheetOrChapter that is used as an Instruction.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DocumentRelatedAssignmentGroup">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A DocumentRelatedAssignmentGroup allows the creation of traceability links to elements in a<i>DocumentVersion</i>for a set of VEC objects. The semantic of the traceability link is defined by the<i>DocumentRelationType.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AssignmentGroup">
            <xs:sequence>
               <xs:element name="Type" type="vec:DocumentRelationType" minOccurs="0"/>
               <xs:element name="RelatedIdentification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If this group relates to a specific element in the<i>relatedDocumentVersion</i>the identifier of the element is defined in this attribute (e.g. a requirements number).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RelatedDocumentVersion" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>DocumentVersion</i>to which this group relates.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RelatedSheetOrChapter" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Allows a more specific relationship to a<i>SheetOrChapter</i>within the<i>relatedDocumentVersion.</i>
                        </p>
                        <p>
                           <i> </i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DocumentVersion">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The DocumentVersion is one of the two anchors for PDM information in the VEC. All technical information about a PartVersion is contained in one or more documents. The documents are containing the actual content of the VEC since all Specifications are an element of a document.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ItemVersion">
            <xs:sequence>
               <xs:element name="DocumentNumber" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The documentNumber is the major identifier of a DocumentVersion. The format is user defined and respectively company specific.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DocumentType" type="vec:DocumentType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The type of the document, that is defined in an<i>OpenEnumeration</i>and gives a hint about the content of the document. Values for typical types of documents in the process are predefined (e.g. a part master document for the specification of a<i>PartVersion</i>).</p>
                        <p>At later point, further constraint might be attached to<i>documentType</i>defining a minimum content for certain types of documents.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DocumentVersion" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The documentVersion specifies the version index of a document (see also documentNumber).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DigitalRepresentationIndex" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>An arbitrary change index that indicates if the digital representation (the content in VEC) of this<i>DocumentVersion</i>has been changed / regenerated. This can be for example an index, a timestamp or a checksum. This allows the detection of changes in the content, even when the DocumentNumber &amp; DocumentVersion is the same.</p>
                        <p>For a more detailed explanation in the context see "Parts &amp; Documents". KBLFRM-837.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CreatingSystem" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The creatingSystem specifies the computer application or the machine which is used to create the document.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DataFormat" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The dataFormat specifies the convention that was used to structure the information in the document. This is useful if the DocumentVersion is a pointer to an external document, which is not contained in the VEC or if the content of this DocumentVersion was automatically generated by the extraction of the information out of the original document.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FileName" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The name of the file as it appears in the VEC-Package, including the folder structure (fully qualified name) that contains this<i>DocumentVersion</i>. If this DocumentVersion is a link to an external document (e.g. a ComponentSymbol), then the fileName attribute points to the file containing the original document. The usage of this attribute is only valid, if the original document is distributed along with the VEC-file in a VEC-Package. It must not point to any file location which is not part of the VEC-Package (e.g. a File on a central server file share).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Location" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The location is a possibility to provide a reference to the source location of the<i>DocumentVersion</i>(e.g. a document management system or an archive system) where the original document can be found<i>.</i>The location shall be provided either as an URN or URL.</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NumberOfSheets" type="xs:integer" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The number of sheets contained in the document.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedPart" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">The association is an informative link which PartVersions are described by the DocumentVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RelatedDocument" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">The association is an informative link which DocumentVersion are related to each other (e.g. by derivation, A Harness-Drawing is related to a 3D-Model).</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ItemEquivalence"
                           type="vec:ItemEquivalence"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies ItemEquivalances defined by the DocumentVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SheetOrChapter"
                           type="vec:SheetOrChapter"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies SheetOrChapters defined in this DocumentVersion. These are especially useful if the DocumentVersion represents an external reference.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Specification"
                           type="vec:Specification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Specifications contained in the DocumentVersion. All structured, technical information in the VEC is described by such Specifications.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DoubleValueProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with a double value.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the CustomProperty.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="EEComponentRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An EEComponentRole defines the instance specific properties and relationships of an EE-component.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="EEComponentSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>EEComponentSpecification</i>that is instanced by this<i>EEComponentRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentNode" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ComponentNode that is realized by the referenced EEComponent (OccurrenceOrUsage with EEComponentRole). KBLFRM-341</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ExtensionSlotRef"
                           type="vec:ExtensionSlotReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ExtensionSlotReferences used in the EEComponentRole.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HousingComponentRef"
                           type="vec:HousingComponentReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the HousingComponentReferences used in the EEComponentRole. (KBLFRM-401)</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="EEComponentSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Base-class for the specification of electrological components, which are connected to the harness. Usually electrological components are not part of the harness e.g. a fuse, a switch or a control device. All EEComponents can have one or more HousingComponents which are possible interfaces for the connection to a harness.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="PowerConsumption"
                           type="vec:PowerConsumption"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PowerConsumptions</i>of this<i>EEComponentSpecification.</i>This refers to the internal power consumption of this E/E-component, not the power-consumption that might occur indirectly over other E/E-components that are supplied through this component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Connections"
                           type="vec:InternalComponentConnection"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="ExtensionSlots"
                           type="vec:ExtensionSlot"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the available ExtensionSlots of the EEComponent.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HousingComponent"
                           type="vec:HousingComponent"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the available connector interfaces of the EEComponent.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="States"
                           type="vec:SwitchingState"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the available<i>SwitchingStates</i>of the EEComponent.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="EdgeMountedFixingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for fixings that are mounted onto an edge.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:FixingSpecification">
            <xs:sequence>
               <xs:element name="EdgeThickness" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a range of valid thicknesses, onto which the fixing can be mounted.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ExtendableElement" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract base class for extendable elements. Extendable elements have the possibility to define non-standard custom properties.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="ReferencedExternalDocuments" type="xs:IDREFS" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>This association allows all<i>ExtendableElements</i>in the VEC to reference<i>DocumentVersions</i>as "external reference".</p>
                  <p>This association shall be used for the extension of elements in the VEC with information that cannot be represented in the VEC in an appropriate way but can be expressed in some external format (e.g. a specific symbol for a<i>ComponentNode</i>).</p>
                  <p>D<i>ocumentVersions</i>referenced by this association shall not contain any<i>Specifications.</i>
                  </p>
                  <p>This association is no replacement for associations with a more precise semantic like the<i>DocumentBasedInstruction</i>or the associations between<i>PartVersion</i>and<i>DocumentVersion.</i>
                  </p>
                  <p> </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CustomProperty"
                     type="vec:CustomProperty"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">Specifies the CustomProperties of the ExtendableElement.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExtensionSlot">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>ExtensionSlot</i>defines a slot within an EE-Component where other EE-Components can be plugged into (modular extension). This is necessary for example for modular power distributions.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Identification of the ExtensionSlot, which must be distinct for all ExtensionSlots of an EEComponent.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AllowedInserts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartRelations</i>that are valid inserts for this<i>ExtensionSlot.</i>
                        </p>
                        <p>This reference points to<i>PartRelations</i>in order to allow referencing indirectly a<i>PartVersion</i>if the description of individual<i>PartVersions</i>is done with one physical VEC file per<i>PartVersion</i>and to allow the expression of optional inserts, choices etc. However, inserts for an<i>ExtensionSlot</i>are always<i>EEComponents</i>by itself. Therefore, the referenced<i>PartVersion</i>shall have a<i>PrimaryPartType = EEComponent.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ExtensionSlotReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An ExtensionSlotReference represents the usage of an ExtensionSlot in the context of a PartUsage or PartOccurrence.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0"/>
               <xs:element name="ExtensionSlot" type="xs:IDREF"/>
               <xs:element name="UsedInserts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Defines the inserts used for extension slot in a defined instance. These can be more than one EEComponentRole, because of variance in a 150% specification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ExternalMapping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>ExternalMapping</i>is used to relate an<i>ExtendableElement</i>in the VEC with an element located in an external data source. The element in the VEC is referenced by the<i>mappedElement</i>, the external element is identified by the attribute<i>externalReference.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="ExternalReference" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the unique key of the external element. How this key shall be interpreted is dependent from the format of the external data source.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MappedElement" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ExternalMappingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>ExternalMappingSpecification</i>is used to define a mapping between an external data source (represented by the referenced<i>mappedDocument</i>) and the content of a VEC file.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="MappedDocument" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Reference to the<i>DocumentVersion</i>that represents the external data source that connected to the VEC content by the<i>ExternalMappingSpecification</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Mappings"
                           type="vec:ExternalMapping"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the mappings of individual element.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FerriteRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>FerriteRole</i>defines the instance specific properties and relationships of a ferrite.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="NumberOfWindings" type="xs:integer" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the of windings that the wires are wound around the ferrite.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FerriteSpecification" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FerriteSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of ferrites.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FileBasedInstruction">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A FileBasedInstruction is an Instruction that references a file packaged (VEC-Package) together with a VEC-file. Such a file can be for example an image.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Instruction">
            <xs:sequence>
               <xs:element name="FileName" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The name of the file as it appears in the package, including the folder structure (fully qualified name).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LastModified" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The last modified timestamp of the file.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DataFormat" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The dataFormat specifies the format of the FileReference. The dataFormat has to be a valid "Internet Media Type" (see<a href="https://www.iana.org/assignments/media-types/media-types.xhtml">https://www.iana.org/assignments/media-types/media-types.xhtml</a>).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FillerSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of filler elements in the wire.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Material"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the material of the filler.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Diameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the filler.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FittingOutlet">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies one outlet of the fitting.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the identification of the Outlet. This must be unique within a FittingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InnerDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the inner diameter of the outlet.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OuterDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the outer diameter of the outlet.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NominalSize" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the nominal size of a tube. The nominal size is a name for the size of the tube that is somehow related to the inner diameter of the tube. However, it is not the inner diameter (e.g. "10.5").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PlacementPoint</i>that represents this<i>FittingOutlet</i>in a PlaceableElementSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FittingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of fittings. A fitting is a part that is used to connect pipes or tube. A fitting has a specific form (e.g. Y,T)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:WireProtectionSpecification">
            <xs:sequence>
               <xs:element name="Form" type="vec:FittingForm" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the form of the fitting (e.g. Y, T).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Outlet"
                           type="vec:FittingOutlet"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FixingRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A FixingRole defines the instance specific properties and relationships of a fixing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="FixingSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>FixingSpecification</i>that is instanced by this<i>FixingRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FixingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of fixings. A fixing is used to fix the harness in a certain position (e.g. at the car body, a seat, an ECU etc.). The FixingSpecification describes how the fixing is attached to the "non-harness" element. The attachment to harness is described by a PlaceableElementSpecification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="Offset" type="vec:NumericalValue" minOccurs="0"/>
               <xs:element name="NominalSize" type="vec:NumericalValue" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FlatCoreSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the properties of a flat (rectangular) conductor which are specific for them.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConductorSpecification">
            <xs:sequence>
               <xs:element name="Size" type="vec:Size" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the size (width &amp; height) of the flat core.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FunctionalAssignmentGroup">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>FunctionalAssignmentGroup</i>clusters elements that contribute to a specific function or a functional aspect. With such a group, certain functional requirements can be associated.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AssignmentGroup">
            <xs:sequence>
               <xs:element name="FunctionalRequirements"
                           type="vec:FunctionalRequirement"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Functional requirements that apply to the members of this group.</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FunctionalRequirement">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of functional requirements in an enumerable way (e.g. conformance to a certain ASIL level). Attributes of this type have the multiplicity of [0..*]. The following restrictions apply:</p>
            <ul>
               <li>For a combination of type &amp; referenceSystem only a single value is allowed. For single type</li>
               <li>For a specific type and different references systems, multiple values are allowed. However, they must express the same semantic value.</li>
               <li>For different types multiple values are allowed.</li>
            </ul>
            <p> </p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Type" type="vec:FunctionalRequirementType" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The type defines to which category a requirement belongs (e.g.  Functional Safety).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ReferenceSystem" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The reference system identifies the system in which the values are defined (e.g. ISO26262)</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Value" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The value that represents the functional requirement (e.g. ASIL D).</p>
                  <p> </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="FunctionalStructureNode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>
               <i>FunctionalStructureNodes</i>can be used to define a hierarchical structure on<i>FunctionalAssignmentGroups</i>. Every<i>FunctionalStructureNode</i>can reference<i>FunctionalAssignmentGroups</i>and<i>FunctionalStructureNodes</i>as children.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique identification of the<i>FunctionalStructureNode.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="AliasId"
                     type="vec:AliasIdentification"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Room to specify additional identifiers for the<i>FunctionalStructureNode</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:AbstractLocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>On optional human readable description of the<i>FunctionalStructureNode</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Abbreviation" type="vec:LocalizedString" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Room for a human readable short name, title etc. of the<i>FunctionalStructureNode</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ContainedGroups" type="xs:IDREFS" minOccurs="0"/>
         <xs:element name="ChildNodes"
                     type="vec:FunctionalStructureNode"
                     minOccurs="0"
                     maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="FunctionalStructureSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification to define any hierarchical structure on functional assignment groups (e.g. by the means of a functional organization). The hierarchy starts with a single root node.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="RootNode" type="vec:FunctionalStructureNode">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FuseComponent">
      <xs:sequence>
         <xs:element name="Identification" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Identification of the FuseComponent, which must be distinct for all FuseComponents of an MultiFuseSpecification.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ConnectedPins"
                     type="xs:IDREFS"
                     minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="FuseSpecification" type="xs:IDREF" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="FuseSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of the electrological aspects of a fuse.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="FuseType" type="vec:FuseType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The geometric type of a fuse.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IMax" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum electric current tolerated by the fuse.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeneralTechnicalPartSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of common properties for technical parts.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="ColorInformation"
                           type="vec:Color"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the color of the part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MassInformation"
                           type="vec:MassInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the mass of the part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaterialInformation"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the material of a part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RobustnessProperties"
                           type="vec:RobustnessProperties"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the robustness of a part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TemperatureInformation"
                           type="vec:TemperatureInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies valid temperatures for a part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FitRate" type="xs:double" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The Failures In Time (FIT) rate of a device is the number of failures that can be expected in one billion (109) device-hours of operation.[14] (E.g. 1000 devices for 1 million hours, or 1 million devices for 1000 hours each, or some other combination.) (see<a href="https://en.wikipedia.org/wiki/Failure_rate#Units">https://en.wikipedia.org/wiki/Failure_rate#Units</a>)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UnspecifiedAccessoryPermitted"
                           type="xs:boolean"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines whether accessories which are not explicitly defined by a<i>PartRelation</i>may be used with instances of this part. If this attribute is not specified the default value is<i>true.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoundingBox" type="vec:BoundingBox" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the bounding box of the part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PartRelation"
                           type="vec:PartRelation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies possible relations (accessories) of the specified part with other PartVersion (e.g. caps, clips).</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeometryNode" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GeometryNode is the geometric representation of a TopologyNode. A TopologyNode may be represented by more than one GeometryNodes, but only within different<i>BuildingBlockSpecification2D/3D.</i>That means, in a single BuildingBlockSpecification a<i>TopologyNode</i>shall only be represent once (or not).</p>
            <p>A GeometryNode is either a GeometryNode2D or a GeometryNode3D.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the GeometryNode. The identification is guaranteed to be unique within the corresponding BuildingBlockSpecification. For all VEC-documents a GeometryNode-instance can be trusted to be the same if the BuildingBlockSpecification-instance is the same (see BuildingBlockSpecification) and the identification of the GeometryNode is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the GeometryNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferenceNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TopologyNode that is represented by the GeometryNode.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeometryNode2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GeometryNode2D is the geometric representation of a TopologyNode in 2D-space.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:GeometryNode">
            <xs:sequence>
               <xs:element name="CartesianPoint" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the CartesianPoint2D where the GeometryNode2D is located.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeometryNode3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GeometryNode3D is the geometric representation of a TopologyNode in 3D-space.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:GeometryNode">
            <xs:sequence>
               <xs:element name="CartesianPoint" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the CartesianPoint3D where the GeometryNode3D is located.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeometrySegment" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GeometrySegment is the geometric representation of a TopologySegment. A TopologySegment may be represented by more than one GeometrySegments, but only within different<i>BuildingBlockSpecification2D/3D.</i>That means, in a single BuildingBlockSpecification a<i>TopologySegment</i>shall only be represent once (or not).</p>
            <p>Furthermore, the definition of the<i>GeometrySegment</i>shall be consistent to the definition in the<i>TopologySpecification.</i>That means, that a<i>GeometrySegment</i>shall have those<i>GeometryNodes</i>as start- &amp; endNode that represent the<i>TopologyNodes</i>referenced from the corresponding<i>TopologySegment</i>.</p>
            <p>A GeometrySegment is either a GeometrySegment2D or a GeometrySegment3D.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the GeometrySegment. The identification is guaranteed to be unique within the corresponding BuildingBlockSpecification. For all VEC-documents a GeometrySegment-instance can be trusted to be the same if the BuildingBlockSpecification-instance is the same (see BuildingBlockSpecification) and the identification of the GeometrySegment is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the GeometrySegment.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferenceSegment" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TopologySegment that is represented by the GeometrySegment.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeometrySegment2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GeometrySegment2D is the geometric representation of a TopologySegment in 2D-space.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:GeometrySegment">
            <xs:sequence>
               <xs:element name="StartVector" type="vec:CartesianVector2D">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the start vector of the geometry segment. The start vector is a tangent to the segment at the start position.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="EndVector" type="vec:CartesianVector2D">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the end vector of the geometry segment. The end vector is a tangent to the segment at the end position.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="EndNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the GeometryNode2D where the GeometrySegment2D ends.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="StartNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the GeometryNode2D where the GeometrySegment2D starts.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PathSegment"
                           type="vec:PathSegment"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies an ordered list of PathSegments that describe the appearance of the GeometrySegment2D. The appearance is described by the concatenation of the PathSegments beginning at the startNode of the GeometrySegment2D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GeometrySegment3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GeometrySegment3D is the geometric representation of a TopologySegment in 3D-space.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:GeometrySegment">
            <xs:sequence>
               <xs:element name="StartVector" type="vec:CartesianVector3D">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the start vector of the geometry segment. The start vector is a tangent to the segment at the start position.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="EndVector" type="vec:CartesianVector3D">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the end vector of the geometry segment. The end vector is a tangent to the segment at the end position.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="EndNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the GeometryNode3D where the GeometrySegment3D ends.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="StartNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the GeometryNode3D where the GeometrySegment3D starts.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Curve"
                           type="vec:Curve3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies an ordered list of curves which describe the centerline of the segment. If a segment is described by more than one curve, the centrelines of the individual curves are aligned in the order of this association.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GrommetRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A GrommetRole defines the instance specific properties and relationships of a grommet.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="GrommetSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>GrommetSpecification</i>that is instanced by this<i>GrommetRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CableLeadThroughReference"
                           type="vec:CableLeadThroughReference"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GrommetSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of grommets.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="Hardness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the hardness of the grommet.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HoleDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the valid diameter of a hole into which the grommet fits.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlateThickness" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies valid the plate thickness at the hole into which the grommet fits.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GrommetType" type="vec:GrommetType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the grommet.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MountingType" type="vec:GrommetMountingType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CableLeadThrough"
                           type="vec:CableLeadThrough"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the CableLeadThroughs of the Grommet.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HarnessDrawingSpecification2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The HarnessDrawingSpecification2D specifies a two-dimensional drawing of a harness. A harness drawing is composed of one or more BuildingBlockSpecifaction2D which are placed on the drawing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="BuildingBlockPositionings"
                           type="vec:BuildingBlockPositioning2D"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the BuildingBlockPositioning2Ds that are forming the 2D harness drawing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HarnessGeometrySpecification3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The HarnessGeometrieSpecification3D specifies a three-dimensional model of a harness. A harness model is composed of one or more BuildingBlockSpecifaction3D which are placed in the model.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Type" type="vec:GeometryType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the harness geometry.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BuildingBlockPositionings"
                           type="vec:BuildingBlockPositioning3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the BuildingBlockPositioning3Ds that are forming the HarnessGeometrySpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HoleMountedFixingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for fixings that are mounted into a hole. This means the fixing has got a bolt which is mounted into a hole of the surrounding.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:FixingSpecification">
            <xs:sequence>
               <xs:element name="HoleDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the hole in which the fixing is mounted.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlateThickness" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the thickness of the plate in which the hole is positioned.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HoleType" type="vec:HoleMountedFixingHoleType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of how the fixing is fixated in the hole. In other words, it defines what features the hole has to provide to allow a fixation of the fixing.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HoleShape"
                           type="vec:HoleMountedFixingHoleShape"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HousingComponent">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A HousingComponent describes the interface of an EEComponent with which it can be connected to another EEComponent or a harness. The characteristics of the interface can be described with a referenced ConnectorHousingSpecification. (see KBLFRM-300)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Identification of the HousingComponent, which must be distinct for all HousingComponents of an EEComponent.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the<i>HousingComponent</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompatibleTypes"
                           type="vec:HousingComponentType"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The values of this attribute define the<i>HousingComponentTypes</i>that are valid to be associated with this<i>HousingComponent.</i>In other word, if this<i>HousingComponent</i>can<i/>be associated with a relay, a fuse, a connector housing of a harness. The values are matching the<i>PrimaryPartType</i>of the<i>PartVersion</i>of the component that should be associated (plugged) into this housing component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HousingSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ConnectorHousingSpecification that is describing the connector interface of the HousingComponent (e.g. Slots, Cavities, Design, Coding).</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PinComponent"
                           type="vec:PinComponent"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the PinComponents of HousingComponent. (see KBLFRM-300)</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SegmentConnectionPoint"
                           type="vec:SegmentConnectionPointHC"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>SegmentConnectionPoints</i>the<i>HousingComponent</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HousingComponentReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A HousingComponentReference represents the usage of a HousingComponent in the context of a PartUsage or PartOccurrence. (KBLFRM-401)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the HousingComponentReference. The identification is guaranteed to be unique within the EEComponentRole.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentConnector" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ComponentConnector that is realized by the referenced HousingComponentReference.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="HousingComponent" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Points to the HousingComponent referenced by the HousingComponent reference. (KBLFRM-401)</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectorHousingRole"
                           type="vec:ConnectorHousingRole"
                           minOccurs="0"/>
               <xs:element name="PinComponentRef"
                           type="vec:PinComponentReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the PinComponentReferences used in the HousingComponentReference. (KBLFRM-401)</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IECUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The IECUnit class can define quantities in the terms of the IEC-Unit-System by specifying the corresponding IEC prefix (optional) and an IEC unit name.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="IecUnitName" type="vec:IECUnitName">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the IEC unit.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IecPrefix" type="vec:IECPrefix" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the prefix of the IEC unit.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ImperialUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The ImperialUnit class can define quantities in the terms of the Imperial-Unit-System by specifying the corresponding Imperial unit name.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="ImperialUnitName" type="vec:ImperialUnitName">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the imperial unit.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Instruction" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract super class to specify different types of instructions. Possible instructions are text, file or document based.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="InsulationSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of insulation properties of a WireElement.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="BaseColor"
                           type="vec:Color"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the base color of the insulation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FirstIdentificationColor"
                           type="vec:Color"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the first identification color of the insulation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SecondIdentificationColor"
                           type="vec:Color"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the second identification color of the insulation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelIdentificationColor"
                           type="vec:Color"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the color of a label printed on the insulation of the wire.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelIdentificationType" type="vec:LabelType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of a label printed, stamped or integrated on or in the insulation of the wire (e.g. alpha numerical, bar code).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelIdentificationValue" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of a label printed on the insulation of the wire. This value applies to all wire elements that satisfy this specification, so all instances share the same label value (e.g. a wire type or a core number in a multi core wire).</p>
                        <p>If instances of a wire require individual labeling it has to be defined on the<i>WireElementReference</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Material"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the material of the insulation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Thickness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the thickness of the insulation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelingTechnology"
                           type="vec:LabelingTechnology"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AllowedLabelingTechnology"
                           type="vec:LabelingTechnology"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IntegerValueProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with an integer value.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="xs:integer">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the CustomProperty.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="InternalComponentConnection">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>InternalComponentConnection</i>defines a conductive connection between<i>PinComponents</i>within an<i>EEComponent</i>. Such a connection can be statically permanent or dynamically switch (e.g. by a relais). This behaviour can be defined with a<i>SwitchingState</i>.</p>
            <p>The electrical behaviour of an<i>InternalComponentConnection</i>can be further specified by a referenced<i>ConductorSpecification.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Identification of the<i>InternalComponentConnection</i>, which must be distinct for all<i>InternalComponentConnection</i>of an<i>EEComponent</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConductorSpecification" type="xs:IDREF" minOccurs="0"/>
               <xs:element name="Pins" type="xs:IDREFS"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="InternalTerminalConnection">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An InternalTerminalConnection represents an electrical connection within a terminal. For standard terminals all receptions (wire- and terminal-receptions) have an electrical connection. For non-standard terminals (e.g. coax) only some receptions have an electrical connection. The InternalTerminalConnection is modelled as a separate class and not as relationship between wire- and terminal-reception, since it is possible that a terminal has only one kind of reception (e.g. a parallel connector, a cavity bridge). (see KBLFRM-302)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the InternalTerminalConnection. The identification is guaranteed to be unique within the TerminalSpecification (this might be for example an internal connection number).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalReception" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TerminalReceptions that participate in the InternalTerminalConnection.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReception" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the WireReceptions that participate in the InternalTerminalConnection.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ItemEquivalence">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines two or more ItemVersions to be equivalent out of the view of a certain company. The ItemEquivalence class will most likely be used by a company to express which PartNumber a certain PartVersion has in the context of other companies (same applies to<i>DocumentVersions</i>). However, for every other company separate ItemEquivalences are needed as the statement of equivalence can be very subjective.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CompanyName" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the company which states the ItemEquivalence.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Item" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References all ItemVersion that are considered to be equivalent by the ItemEquivalence. A single<i>ItemEquivalence</i>shall only reference<i>ItemVersions</i>of the same class (either<i>DocumentVersions</i>or<i>PartVersions</i>).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ItemHistoryEntry">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An ItemHistroyEntry defines the direct relationship between ItemVersions in the terms of predecessor and successor. There are two possible types of relationships between ItemVersions, derivation and sequence. Derivation means for example for parts, that the successor version is a new part developed on the base of the predecessor version. Sequence means the successor version is an improvement of the predecessor version. By the combination of more than one ItemHistoryEntry a linear sequence of ItemVersions can be represented.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Type" type="vec:HistoryEntryType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of relationship between the ItemVersions.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PredecessorVersion" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ItemVersion that is the predecessor in the ItemHistoryEntry.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SuccessorVersion" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ItemVersion that is the successor in the ItemHistoryEntry.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ItemVersion" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract super-class for physical objects (e.g. a Terminal), virtual objects (e.g. a 150% Harness) as well as documents (e.g. a wiring diagram). In difference to AP 212 the VEC makes it only possible to describe/exchange information about Versions since Master-Objects cannot exist without one or more Versions.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Abbreviation"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for a short name of the Item. In case of a document the attribute is wanted to contain its title.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the ItemVersion. e.g. Buchsengehäuse 26-polig</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompanyName" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the publishing company of the ItemVersion. The companyName is part of the main identifier of an ItemVersion together with the corresponding number (partNumber or documentNumber) and version (partVersion or documentVersion).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ProcessingInstruction"
                           type="vec:Instruction"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Processing instructions for the application of the part or the document.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Contract" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the contracts that apply to an ItemVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CopyrightInformation" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>CopyrightInformation</i>that is in effect for this<i>ItemVersion.</i>If no<i>CopyrightInformation</i>is referenced by the<i>ItemVersion</i>, the<i>CopyrightInformation</i>that is referenced by the<i>VecContent</i>(if defined) shall be considered as in effect for this<i>ItemVersion.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Approval"
                           type="vec:Approval"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the approval information of the ItemVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ChangeDescription"
                           type="vec:ChangeDescription"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the change history of the ItemVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Creation" type="vec:Creation" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the information about the creation of the ItemVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LabelingRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>LabelingRole.</i>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="LabelType" type="vec:LabelType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of a label printed, stamped or integrated on or in component (e.g. alpha numerical, bar code).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelValue" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of a label printed on the component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelingTechnology"
                           type="vec:LabelingTechnology"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelingSpecification" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LabelingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>LabelingSpecification</i>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="LabelType" type="vec:LabelType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of a label printed, stamped or integrated on or in component (e.g. alpha numerical, bar code).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelValue" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of a label printed on the component. This value applies to all components that satisfy this specification, so all instances share the same label value (e.g. a part number).</p>
                        <p>If instances of a component require individual labeling it has to be defined on the LabelingRole.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelingTechnology"
                           type="vec:LabelingTechnology"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AllowedLabelingTechnology"
                           type="vec:LabelingTechnology"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LocalGeometrySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>LocalGeometrySpecification</i>is responsible to create a relationship between the 3D model of a component (e.g. a connector, a cable duct or a fixing) and entities of the VEC. The 'Local' in the name refers to the fact that all definitions within this specification are 'local' to the 3D model of a specific component (a component in a library, not in a specific usage).</p>
            <p>Specifically, it defines a transformation to transform the<i>BoundingBox</i>of a component into to coordinate system of the component and it defines the positions of<i>Placement-</i>and<i>MeasurementPoints</i>in this coordinate system.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="BaseUnit" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The<i>Unit</i>in which all coordinates (e.g. cartesian points) are defined. Shall be a unit of length (e.g. millimetre).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoundingBoxPositioning"
                           type="vec:Transformation3D"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The transformation that defines the positioning of the bounding box in coordinate system of the component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CartesianPoint"
                           type="vec:CartesianPoint3D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>All<i>CartesianPoint3Ds</i>that are used in this<i>LocalGeometrySpecification.</i>All<i>CartesianPoint3Ds</i>are defined in relation to the coordinate system of the component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Positions"
                           type="vec:LocalPosition"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>All position defined by this<i>LocalGeometrySpecification.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LocalPosition" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>LocalPosition</i>defines the position of a relevant point of component within the coordinate system of the component.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="CartesianPoint" type="xs:IDREF"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="LocalizedString">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the internationalization of text contents. Attributes of the type LocalizedString normally have the multiplicity [0..*]. This means that such an attribute can have multiple values for different locales. It must not have multiple values for the same locale.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AbstractLocalizedString"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LocalizedStringProperty">
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="vec:LocalizedString">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the<i>CustomProperty.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LocalizedTypedString">
      <xs:annotation>
         <xs:documentation xml:lang="en">Allows the internationalization of text contents in a typed way. Attributes of the type LocalizedTypedString normally have the multiplicity [0..*]. This means that such an attribute can have multiple values for different locales and types. It must not have multiple values for the same locale and type.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AbstractLocalizedString">
            <xs:sequence>
               <xs:element name="Type" type="vec:LocalizedTypedStringType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>type</i>of the<i>LocalizedTypedString</i>. This allows the definition of a more detailed semantic than the semantic of the attribute itself with the type<i>LocalizedTypedString.</i>Agreed type values are defined in an OpenEnumeration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Location" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Location specifies a distinct position on a topology. Locations can be used for the placement of components or for the definition of Dimensions.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:DimensionAnchor">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Location. The identification is guaranteed to be unique within the PlacementSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MatchingId" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies an identification for matching the location with a reference point of component (e.g. a cable channel).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacedPlacementPoints" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PlacementPointReference</i>that is placed by this location.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Mapping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The Mapping defines the concrete mapping two parts aliased as A &amp; B. For performance reasons the roles PartSideA and PartSideB are abbreviated to A &amp; B.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="A" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="B" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SlotMapping"
                           type="vec:SlotMapping"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MappingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of a PinMapping. A PinMapping allows the mapping between the Cavities of two independent ConnectorHousingSpecifications. This is for example needed to determine the Mating for an Inliner or for the Mating between an EE-Component and a ConnectorHousing. The PinMapping is a part master data.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Mapping"
                           type="vec:Mapping"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MassInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of mass information. Attributes of the type MassInformation normally have the multiplicity [0..*]. This means that such an attribute can have mass values for different determinationTypes and valueSources. It must not have multiple values for the same determinationType and valueSource.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="DeterminationType"
                     type="vec:ValueDetermination"
                     minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the determination type of the mass information.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Value" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the mass as numerical value.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ValueSource" type="vec:MassInformationSource" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The<i>valueSource</i>defines in an OpenEnumeration the source from which the<i>MassInformation</i>has been retrieved. This information, in combination with the<i>ValueDetermination</i>gives a hint about the reliability of the<i>MassInformation</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="Material">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of material information. Attributes of the type Material normally have the multiplicity [0..*]. This means that such an attribute can have material values for different<i>referenceSystems</i>. It must not have multiple values for the same<i>referenceSystems</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Key" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The key of the material in the corresponding material reference system.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ReferenceSystem" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the material reference system, which is defining possible values and the semantic of material keys.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:LocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>On optional human readable description of the material (e.g. the name).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="MatingDetail">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>If the mating of the two terminals is not unambiguously, a MatingDetail can specify the TerminalReceptions that are mated.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string"/>
               <xs:element name="Connection" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>Connection</i>that is realized by this<i>MatingPointDetail</i>
                           <i>.</i>For example, when a connection is realized by directly plugging or screwing two E/E components together.</p>
                        <p>The definition at level of the<i>MatingDetail</i>might be required if the<i>TerminalRole</i>of the MatingPoint carries multiple different potentials (e.g. Coax).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FirstTerminalReception" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the first terminal reception that is mated.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SecondTerminalReception" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the second terminal reception that is mated.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MatingPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A MatingPoint defines the Mating of two terminals. This normally occurs when two inliners are connected. Then terminals of one side (female) are mated with terminals of the other side (male).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the<i>MatingPoint</i>. The identification is guaranteed to be unique within a<i>CouplingPoint</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Connection" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>Connection</i>that is realized by this<i>MatingPoint</i>
                           <i>.</i>For example, when a connection is realized by directly plugging or screwing two E/E components together.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FirstTerminalRole" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the first terminal that is mated.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SecondTerminalRole" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the second terminal that is mated.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MatingDetail"
                           type="vec:MatingDetail"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the MatingDetails, if a detailed description of the relationships between TerminalReceptions and TerminalReceptions is needed.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MeasurePointPosition">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the position of a MeasurementPoint within the coordinate system of the component. MeasurementPoint onto which dimension can be defined<i>.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:LocalPosition">
            <xs:sequence>
               <xs:element name="MeasurementPoint" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MeasurementPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines a reference point on a component that can be used to apply a Dimension. This is normally a significant point of the component e.g. an edge, a hole, a bolt or something similar.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the MeasurementPoint. The identification is guaranteed to be unique within a component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MeasurementPointReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>MeasurementPointReference</i>is the instance of a<i>MeasurementPoint</i>in the context of an<i>OccurrenceOrUsage</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:DimensionAnchor">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the MeasurementPointReference. The identification is guaranteed to be unique within the containing PlaceableElementRole.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MeasurementPoint" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>MeasurementPoint</i>that is instanced by this<i>MeasurementPointReference.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ModularSlot">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ModularSlot is a place in a connector housing where different other connector housings can be placed during the assembly (e.g. by clicking them into the connector housing).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AbstractSlot">
            <xs:sequence>
               <xs:element name="Optional" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies whether the allocation of the ModularSlot is optional or not (can a usage of the connector housing leave this ModularSlot empty.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AllowedInserts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartRelations</i>that are valid inserts for this<i>ModularSlot.</i>
                        </p>
                        <p>This reference points to<i>PartRelations</i>in order to allow referencing indirectly a<i>PartVersion</i>if the description of individual<i>PartVersions</i>is done with one physical VEC file per<i>PartVersion</i>and to allow the expression of optional inserts, choices etc. However, inserts for a<i>ModularSlot</i>are always ConnectorHousings by itself. Therefore, the referenced<i>PartVersion</i>shall have a<i>PrimaryPartType = ConnectorHousing</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ModularSlotAddOn">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the wire addon needed to reach a<i>ModularSlot</i>from a specific<i>SegmentConnectionPoint</i>. The addon needed to reach the cavities of the insert(s) from this point is defined by the<i>ConnectorHousingSpecification</i>of the insert.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="WireAddOn" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the wire length add on needed for the modular slot.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Slot" type="xs:IDREF"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ModularSlotReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>ModularSlotReference</i>represents the usage of a<i>ModularSlot</i>in the context of PartUsage or PartOccurrence.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AbstractSlotReference">
            <xs:sequence>
               <xs:element name="UsedInserts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the inserts that are used in this<i>ModularSlotReference.</i>More than one insert is valid in the case variant dependent equipment of the slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ModuleFamily">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ModuleFamily is a mechanism to group mutually exclusive modules. This could be for example something like "audio equipment", "diesel engine".</p>
            <p>In other words, a module family groups different variants of the same basic feature. In a real car configuration only one member of the family can participate. For the example module family "audio equipment" the members may be named: "Basic Audio Equipment", "Standard Audio Equipment", "Premium / High End Audio Equipment".</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ModuleFamily. The identification is guaranteed to be unique within the ModuleFamilySpecification. For all VEC-documents a ModuleFamily-instance can be trusted to be the same if the ModuleFamilySpecification-instance is the same and the identification of the ModuleFamily is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the ModuleFamily.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ModuleInFamily" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Modules that belong to the ModuleFamily.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ModuleFamilySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of module families (see ModuleFamily).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="ModuleFamily" type="vec:ModuleFamily" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ModuleFamilies defined in the ModuleFamilySpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ModuleList">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A ModuleList is a mechanism to control additional / completion PartOccurrences. This means for a car configuration, if at least one of the modules in the list participates in the configuration, the "completionComponent" participates, too.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the ModuleList. The identification is guaranteed to be unique within the ModuleListSpecification. For all VEC-documents a ModuleList-instance can be trusted to be the same if the ModuleListSpecification-instance is the same and the identification of the ModuleList is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the ModuleList.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CompletionComponents" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the components that are used as completion, if any of the Modules in the ModuleList appears in a configuration.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ModuleInList" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Modules that belong to the ModuleList. If any of the referenced Modules participates in a configuration the completion components participate, too.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ModuleListSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of module lists (see ModuleList).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="ModuleListConfiguration"
                           type="vec:ModuleList"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ModuleLists defined in the ModuleListSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MultiCavityPlugSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of cavity plugs that apply to more than one cavity. A cavity plug is a watertight non-electrical object to fill an empty cavity. MultiCavityPlugs are formed to fit into one connector / slot and to seal more than one cavity at once. Normally there are different variants of these MultiCavityPlugs that can seal a connector in different pinning scenarios. The cavities that are plugged by a MultiCavityPlug are defined with a SealedCavitiesAssignment.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CavityPlugSpecification">
            <xs:sequence>
               <xs:element name="Assignment"
                           type="vec:SealedCavitiesAssignment"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>SealedCavitiesAssignments</i>that are valid for this<i>MultiCavityPlug</i>. One individual<i>SealedCavitiesAssignment</i>is used for each connector housing that matches witch this<i>MultiCavityPlug.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MultiCavitySealSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for cavity seals that apply to more than one cavity. A CavitySeal is a watertight non-electrical object to fill a populated Cavity. MultiCavitySeals are formed to fit into one connector / slot and to seal more than one cavity at once.</p>
            <p>There are existing two types of MultiCavitySeals:</p>
            <ol>
               <li>In first type the MultiCavitySeal has an opening for all cavities of the connector. Each opening can be filled either with a wire (without an individual seal) or with a CavityPlug (e.g. a synthetic pin) or a MultiCavityPlug.</li>
               <li>In the second type, the MultiCavitySeal has a specific configuration of openings for some cavities of the connector. These MultiCavitySeals are sealing all cavities with an opening and a wire in it and all cavities where no opening in the MultiCavitySeal exists. For each opening that has no wire it an additional CavityPlug is needed. </li>
            </ol>
            <p>The cavities that are left open by a MultiCavitySeal are defined with a SealedCavitiesAssignment.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CavitySealSpecification">
            <xs:sequence>
               <xs:element name="Assignment"
                           type="vec:OpenCavitiesAssignment"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>OpenCavitiesAssignments</i>that are valid for this<i>MultiCavitySeal</i>. One individual<i>OpenCavitiesAssignment</i>is used for each connector housing that matches witch this<i>MultiCavitySeal.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MultiFuseSpecification">
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="FuseType" type="vec:MultiFuseType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the manufacturing types of a Multi-fuse.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IMaxTotal" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum electric current tolerated by the multifuse in total.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FuseComponents"
                           type="vec:FuseComponent"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NURBSControlPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Represents a control point of a<i>NURBSCurve.</i>It consists of a referenced<i>CartesianPoint3D</i>for the position and a<i>weight</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Weight" type="xs:double">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p> The weight of the NURBSControlPoint.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CartesianPoint3D" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The<i>CartesionPoint3D</i>that defines the position of this<i>NURBSControlPoint.</i> </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="NURBSCurve">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The NURBSCurve represents the parameter set of a NURBS (Non-Uniform rational B-Spline) in the VEC. For a complete definition of NURBS see for example (<a href="https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline">https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline</a>).</p>
            <p> </p>
            <p>Basically, a NURBS curve is defined by:</p>
            <ul>
               <li>a<b>degree</b>
               </li>
               <li>a list of<b>control points</b>: with at least<i>degree + 1</i>points.</li>
               <li>a<b>weight</b>for each control point.</li>
               <li>a<b>knots</b>vector: a list of numbers, with (<i>degree + #controlpoints +1)</i>elements. Every number must be equal or greater than its predecessor, and the same value must not be repeated more than<i>degree</i>times. It seems that modern NURBS algorithms just require (<i>degree + #controlpoints -1)</i>control points.</li>
            </ul>
            <p>Commonly used default assignments for the parameters are:</p>
            <ul>
               <li>
                  <b>weight = 1</b>for all control points: In this case the curve is called "non-rational".</li>
               <li>
                  <b>knot</b>vector: equidistant and increasing values in the knot vector (e.g. 1,2,3,4,5,6,7) means the curve is "uniform" which exists in two variants.<ul>
                     <li>
                        <b>clamped</b>(or pinned): If the knot vector starts and ends with<i>degree</i>times the same value (e.g. degree = 3, knots = [0,0,0,1,2,3,4,5,5,5], then it is<i>clamped.</i>This has the effect, that the first and last control point coincide with the start and end point of the curve.</li>
                     <li>
                        <b>unclamped</b>(or unpinned): If there are no repeated values in the knot vector (e.g. 1,2,3,4,5,6,7) it is unclamped.</li>
                  </ul>
               </li>
            </ul>
            <p>The VEC <i>NURBSCurve</i>corresponds to removed<i>BSplineCurve</i>(VEC Version &lt;= 1.1.3 and KBL). However, the<i>BSplineCurve</i>did not define weight and knot vector, so default assignments where assumed. Existing implementations are using "uniform non-rational b splines", unfortunately some implementations use "uniform clamped" and some "unclamped".</p>
            <p>Since a NURBS cannot be rendered correctly without the knowledge of all parameters and to avoid further misconceptions the VEC allows the definition of all parameters of a NURBS. Furthermore, it requires the specification of all parameters, even if some known default assignment (e.g. non-rational) is used. </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Curve3D">
            <xs:sequence>
               <xs:element name="Degree" type="xs:integer">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the degree of the NURBS (for details see the class description of<i>NURBSCurve).</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Knots"
                           type="xs:double"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the knot-vector of the NURBS(for details see the class description of<i>NURBSCurve).</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ControlPoint"
                           type="vec:NURBSControlPoint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the control points of the NURBS curve (for details see the class description of<i>NURBSCurve)</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Net">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Net is an undirected link between<i>NetworkPorts</i>. It defines that the<i>NetworkPorts</i>are related to each other with the<i>Net</i>.</p>
            <p>A<i>Net</i>is normally an instance of a<i>NetType.</i> E.g. if "CAN-BUS" is defined as a<i>NetType</i>typical<i>Nets</i>would be "BODY-CAN", "AUDIO-CAN".</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Net. The identification is guaranteed to be unique within the NetSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the Net.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetType" type="xs:IDREF" minOccurs="0"/>
               <xs:element name="NetworkPort" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the NetworkPorts that are connected by the Net.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NetGroup">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines a logical grouping of specific<i>Nets</i>. For example, it can be used to identify all<i>Nets</i>of specific CAN domain, a function, a requirement level (e.g. Safety &amp; Security).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the NetGroup. The identification is guaranteed to be unique within the NetSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetGroupType" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the group.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the NetGroup.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Net" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Nets that are grouped by the NetGroup.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NetSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of electrological nets.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Net" type="vec:Net" minOccurs="0" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Nets defined in the NetSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetGroup"
                           type="vec:NetGroup"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the NetGroup defined in the NetSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetType"
                           type="vec:NetType"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="NetworkNode"
                           type="vec:NetworkNode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the NetworkNodes defined in the NetSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NetType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>NetType</i>defines the different types of Nets used in the<i>NetSpecification</i>. The level of detail of the<i>NetTypes</i>for the can be process dependent.</p>
            <p>A NetType could be just used to differentiate between conventional (analogue) communication and bus communication (digital), it can also already define the different types of digital communication (e.g. CAN, MOST, Ethernet).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique identification of the NetType. The identification is guaranteed to be unique within the NetSpecification.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:AbstractLocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Room for additional, human readable information about the<i>NetType</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="SignalType" type="vec:SignalType" minOccurs="0"/>
         <xs:element name="SignalSubType" type="vec:SignalSubType" minOccurs="0"/>
         <xs:element name="SignalInformationType"
                     type="vec:SignalInformationType"
                     minOccurs="0"/>
         <xs:element name="SignalTransmissionMediumType"
                     type="vec:SignalTransmissionMediumType"
                     minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the type of the transmission medium for signals of this type.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="NetViewSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>NetViewSpecification</i>supports the exchange of a basic layout for a<i>NetSpecification</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="CartesianPoint"
                           type="vec:CartesianPoint2D"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>CartesianPoint2Ds</i>
                        <i>NetViewSpecification.</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacedViewItems"
                           type="vec:NetworkNodeViewItem"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>NetworkNodeViewItems</i>
                        <i>NetViewSpecification</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NetworkNode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A NetworkNode is a representative for an actor in the electric system, e.g. an actuator, a sensor, an ECU</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the NetworkNode. The identification is guaranteed to be unique within the NetSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Abbreviation"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for a short name of the NetworkNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetworkNodeType" type="vec:NetworkNodeType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of a NetworkNode. Common values are agreed as an<i>OpenEnumeration</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the NetworkNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubType" type="vec:NetworkNodeSubType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the sub type of a NetworkNode. The sub type allows a differentiation within a specific type. E.g. an actuator can be differentiated into lamps, speakers, motors.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RealizedUsageNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>UsageNode</i>that is realized by this<i>NetworkNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Port"
                           type="vec:NetworkPort"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the NetworkPorts of a NetworkNode.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NetworkNodeViewItem">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>NetworkNodeViewItem</i>
            <i>NetworkNode</i>
            <i>NetViewSpecification</i>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique identification of the<i>NetworkNodeViewItem</i>. The identification is guaranteed to be unique within the<i>NetViewSpecification</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="GridSquare" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the grid square in which the<i>NodeViewItem</i>is placed (e.g. E/40).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="NetworkNode" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>NetworkNode</i>
                  <i>NetworkNodeViewItem.</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="DisplayedPort"
                     type="vec:NetworkPortViewItem"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies all<i>NetworkPortViewItems</i>that are displayed on this<i>NetworkNodeViewItem.</i>The order of this association defines the clockwise arrangement of the ports on the node. As each<i>NetworkPortViewItem</i>can also define the side on which it is placed, side definitions take precedence over order.</p>
                  <p>
                     <i> </i>
                  </p>
                  <p>
                     <b>Caution:</b>This association is<u>ordered</u>!</p>
                  <p>
                     <i> </i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Orientation" type="vec:Transformation2D" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>NetworkNodeViewItem</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="NetworkPort">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>NetworkPort is the source or the receiver of a of a Net.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the NetworkPort. The identification is guaranteed to be unique within the NetSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalDirection" type="vec:SignalDirection" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the direction of the signal on this NetworkPort.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the NetworkPort.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetType" type="xs:IDREF" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NetworkPortViewItem">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>NetworkPortViewItem</i>
            <i>NetworkPort</i>
            <i>NetworkNodeViewItem</i>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Side" type="vec:NetworkPortViewItemSide" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>NetworkNodeViewItem</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="NetworkPort" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>NetworkPort</i>
                  <i>NetworkPortViewItem.</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="NodeLocation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a TopologyNode as a Location.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Location">
            <xs:sequence>
               <xs:element name="ReferencedNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the TopologyNode on which the Location is located.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NodeMapping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the relationship of an inner node to its outer topology. The relationship to the outer topology is expressed with a<i>Location</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="InnerNode" type="xs:IDREF"/>
         <xs:element name="MappedPosition" type="vec:Location"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="NumericalValue">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A quantity expressed with a numerical value and a unit.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ValueWithUnit">
            <xs:sequence>
               <xs:element name="ValueComponent" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of the numerical value.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Tolerance" type="vec:Tolerance" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the tolerance for the dimension.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="NumericalValueProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with a numerical value. (see KBLFRM-319)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="vec:NumericalValue">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the<i>CustomProperty.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OccurrenceOrUsage" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An OccurrenceOrUsage is an abstract appearance of a part in the harness. This can either be a concrete part (with a part number or something similar) or the description (specification / requirements) of a part that should be used at that position. In the first case it would be a PartOccurrence in the second case a PartUsage.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the OccurrenceOrUsage. The identification is guaranteed to be unique within the context. For all VEC-documents an OccurrenceOrUsage-instance can be trusted to be the same if the context-instance is the same and the identification of the OccurrenceOrUsage is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify additional identifiers for the OccurrenceOrUsage.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Abbreviation"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies an abbreviation of the<i>OccurrenceOrUsage</i>. Normally this a human readable short name.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the OccurrenceOrUsage.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RealizedUsageNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>UsageNode</i>that is realized by this<i>OccurrenceOrUsage</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferenceElement" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>OccurrenceOrUsage</i>for which this<i>OccurrenceOrUsage</i>is an accessory / supplementary component. If an<i>OccurrenceOrUsage</i>defines more than one<i>referenceElement</i>, the semantic is that it is related to the combination all "reference elements" and not to each individually. In other words, in a variable product definition the<i>OccurrenceOrUsage</i>only exists if all<i>referenceElements</i>exist.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstallationInstruction"
                           type="vec:Instruction"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Room to specify InstallationInstruction(s) for the OccurrenceOrUsage.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Role" type="vec:Role" minOccurs="0" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the different roles of the OccurrenceOrUsage.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OccurrenceOrUsageViewItem2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An OccurrenceOrUsageViewItem2D specifies the representation of an OccurrenceOrUsage in a 2DDrawing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the OccurrenceOrUsageViewItem2D. The identification is guaranteed to be unique within the BuildingBlockSpecification2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the OccurrenceOrUsageViewItem2D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GridSquare" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the grid square in which the OccurrenceOrUsageViewItem2D is placed (e.g. E/40).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OccurrenceOrUsage" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>OccurrenceOrUsages</i>which are represented by the view item.</p>
                        <p>
                           <b>Important:</b>To use one<i>OccurenceOrUsageViewItem</i>for multiple<i>OccurrenceOrUsages</i>is only valid, if the referenced items are true alternatives to each other. That means, they must have an identical placement, the geometrical models used for each item must be substitutable and the item must be mutually exclusive to each other.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Orientation" type="vec:Transformation2D" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the orientation of the view item.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OccurrenceOrUsageViewItem3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An<i>OccurrenceOrUsageViewItem3D</i>specifies the existence and representation of an<i>OccurrenceOrUsage</i>in a 3D-model.</p>
            <p>The definition of the existence is necessary because a 150% model of a harness might contain different geometric variants and not all of them must be represented in the same<i>BuildingBlockSpecification3D</i>.</p>
            <p>There are two different cases for the representation of<i>OccurrenceOrUsage</i>s in a 3D model. There are components that can be represented explicitly by a 3D model of the component (e.g. connectors, cable ducts, fixings) and there are components that are represented implicitly by a generic visualization and their placement on the topology (e.g. tapes, tubes). If an OccurrenceOrUsage has a 3D model and it shall be placed explicitly in 3D space, the<i>OccurrenceOrUsageViewItem3D</i>defines a<i>Transformation3D</i>in the<i>orientation</i>role. If no<i>orientation</i>is defined the<i>OccurrenceOrUsage</i>is represented implicitly.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the OccurrenceOrUsageViewItem. The identification is guaranteed to be unique within the BuildingBlockSpecification3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the OccurrenceOrUsageViewItem3D.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OccurrenceOrUsage" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>OccurrenceOrUsages</i>which are represented by the view item.</p>
                        <p>
                           <b>Important:</b>To use one<i>OccurenceOrUsageViewItem</i>for multiple<i>OccurrenceOrUsages</i>is only valid, if the referenced items are true alternatives to each other. That means, they must have an identical placement, the geometrical models used for each item must be substitutable and the item must be mutually exclusive to each other.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Orientation" type="vec:Transformation3D" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the orientation of the view item.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OnPointPlacement">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An OnPointPlacement is a placement of an OccurrenceOrUsage that places it onto discrete points, in most cases one point. In some cases, it is necessary to place a component (with more than one reference point) onto multiple points (e.g. a cable duct).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Placement">
            <xs:sequence>
               <xs:element name="Location" type="vec:Location" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Locations where Placement places the reference points of the placed element.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OnWayPlacement">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An OnWayPlacement places an OccurrenceOrUsage onto an area of the Topology (e.g. a tape or a tube). The area is defined by a startLocation and an endLocation. If startLocation and endLocation are not located on the same TopologySegment it is possible to specify a Path of TopologySegments over which the OnWayPlacement goes.</p>
            <p>The names start- and endLocation are used to distinguish between the two ends. It does<b>
                  <u>not</u>
               </b>indicate a direction as property of the product (e.g. for tapes).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Placement">
            <xs:sequence>
               <xs:element name="EndLocation" type="vec:Location">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Location where OnWayPlacement ends.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Path" type="vec:Path" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the topology path defining the way the OnWayPlacement takes in the topology.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="StartLocation" type="vec:Location">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Location where OnWayPlacement starts.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OpenCavitiesAssignment">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An OpenCavitiesAssignment groups the cavities of ONE connector that are open in a MultiCavitySeal. If a MultiCavitySeal fits into more than one connector, than there are as many OpenCavitiesAssignments.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="OpenCavities" type="xs:IDREFS">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the cavities that are open.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="OpenWireEndTerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>An OpenWireEndTerminalRole defines the instance specific properties and relationships of an open wire end.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalRole"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OpenWireEndTerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of open wire ends. An open wire end is an end of wire located at a specific location in the harness. Open wire ends are not connected to some other component, in contrast to regular connectors or ring terminals. Only one wire is ending at a single open wire end, otherwise it would be a splice.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalSpecification"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="OtherUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The OtherUnit class can be used to define a unit, which is necessary in the context of data exchange but not contained in the standard systems (e.g. Piece).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="OtherUnitName" type="vec:OtherUnitName">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the unit.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartOccurrence">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PartOccurrence is an instance of a component with a specified part number (PartVersion).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:OccurrenceOrUsage">
            <xs:sequence>
               <xs:element name="IsSecondaryAlternative" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If a PartUsage is realized by more than one PartOccurrence it is possible to specify which one is the preferred. (see KBLFRM-264)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AlternativeOccurrence" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the PartOccurrences that are an alternative for this PartOccurrence.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstanciatedOccurrence" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the PartOccurrence which is instantiated by the PartOccurrence. This reference is for example needed in the case of usage of assemblies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Part" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the PartVersion that is instantiated by this PartOccurrence.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RealizedPartUsage" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the PartUsages that are realized by the PartOccurrence.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartOrUsageRelatedSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Base class for all specifications which are describing a<i>PartVersion</i>or a<i>PartUsage</i>. A<i>PartOrUsageRelatedSpecification</i>specifies a certain aspect of the described part or usage (e.g. general technical part information, connector housing aspects or wire aspects).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="SpecialPartType" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The specialPartType allows the specification of subclassifications for a PartOrUsageRelatedSpecification (e.g. different types of connector housings).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DescribedPart" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the PartVersion(s) to which the information defined in this specification applies. Example: If the PartOrUsageRelatedSpecification is a GeneralTechnicalPartSpecifcation and it defines that the color is "green" then all PartVersion referenced by this association are "green".</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartRelation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>PartRelation</i>defines additional parts (e.g. accessories) for a specific part. These parts are in some way or usage scenario required for the part itself to be used. However, they are not included with the part number and have to ordered separately. This can be used for example for caps, cable ties etc.</p>
            <p>The associated<i>PartRelations</i>of a<i>GeneralTechnicalPartSpecification</i>represent a configurable bill of material that can/must be ordered together with the part, when it is used. Each<i>PartRelation</i>represents an item / line in this bill of material. The semantic by which a<i>PartRelation</i>is resolved to<i>PartVersions</i>is defined by the<i>PartRelationType.</i>If multiple<i>PartRelations</i>resolve to the same<i>PartVersions</i>the resulting bill of material is the sum of them.</p>
            <p>If a<i>PartRelation</i>references more than one<i>accessoryPart</i>the<i>PartRelationType</i>defines the semantic to resolve this reference for a resulting bill of material. If the type is<i>Mandatory</i>all referenced<i>PartVersions</i>shall be in the resulting bill of material. If the type is<i>Optional</i>, the referenced<i>PartVersions</i>can be selected by choice into the resulting bill of material. However, the choice applies to<u>all</u>
               <i>PartVersion</i>s of one<i>PartRelation.</i>For<i>Mandatory</i>it is semantically equivalent to have<u>one</u>
               <i>PartRelation</i>referencing<u>N</u>
               <i>PartVersions</i>or to have<u>N</u>
               <i>PartRelations</i>, each referencing<u>one</u>
               <i>PartVersion.</i>The<i>PartRelationType OneOfAll</i>defines, that exactly<u>one</u>of the referenced<i>PartVersions</i>shall be chosen for the resulting bill of material.</p>
            <p>If the same<i>PartVersion</i>is referenced multiple times, each reference counts as its own position.</p>
            <p>
               <u>
                  <b>Example:</b>
               </u>To express that a<i>PartVersion</i>shall be used at least three times and with a maximum of 6 times, three mandatory and three optional<i>PartRelations</i>to this<i>PartVersion</i>would be created.</p>
            <p>With these concepts, simple yes/no decisions can be represented. However, there cases where there are constraints between accessory parts (e.g. if part A, then choice of 2 x B or 1 x C). To express such logic in a static object model is not very feasible and inflexible. For such cases, the<i>relationType 'Custom'</i>was introduced. In this case, the relationships and constraints between all referenced<i>accessoryPart</i>can<i/>be expressed with some custom expression language in the<i>customRelationExpression</i>attribute. Even if it is custom, the expression shall only refer to elements that are contained in the<i>accessoryPart</i>relation and shall not influence other<i>PartRelations</i>of the same<i>GeneralTechnicalPartSpecification</i>.</p>
            <p> </p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="RelationType" type="vec:PartRelationType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the type of the relation.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CustomRelationExpression" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the relationship between the accessory parts in a proprietary expression language. This attribute shall only be used, if the<i>relationType = 'Custom'.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="AccessoryPart" type="xs:IDREFS">
            <xs:annotation>
               <xs:documentation xml:lang="en">References the PartVersions that are related by the PartRelation.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PartStructureSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of a part structure. This specification defines the PartOccurrences that are in the bill of material of the described PartOrUsage. This is necessary, because it is possible, that for a definite description a Part more PartOccurrences are needed than the ones that are in the bill of material (see CompositionSpecification).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="Content" type="vec:PartStructureContentType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of content of the bill of material (e.g. module, harness complete set)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InBillOfMaterial" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the PartOccurrences that are building the bill of material of a composite part.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartSubstitutionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>PartSubstitutionSpecification</i>defines a set of<i>PartVersions</i>that can be used alternatively, due to an incomplete specification for the 150% product description. For a concrete wiring harness only on valid<i>PartVersion</i>remains. The selection logic for valid<i>PartVersions</i>is not included in the VEC.</p>
            <p>A<i>PartSubstitutionSpecification</i>can be used for example tubes or ring terminals, where a part of the specification is known at design time, but not yet the complete specification. For tubes for example the tube diameter is not known at design time, since it depends on the bundle diameter of a specific configuration.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="AlternativePartVersions" type="xs:IDREFS" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartUsage">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>PartUsages shall be used for the specification of the elements on an electrical system wiring plan and for the specification of the elements on a pure geometry description. PartUsages shall more than ever be used in cases where it is necessary to describe a certain instance of a part or part group, possibly together with certain technical properties, but where it is at the same time yet not possible to define a concrete part number.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:OccurrenceOrUsage">
            <xs:sequence>
               <xs:element name="PrimaryPartUsageType" type="vec:PrimaryPartType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The primary type of the PartUsage defines the type of the described part (e.g. ConnectorHousing, Fixing, etc.) Since the VEC supports dual use parts (e.g. Fixing &amp; WireProtection) there is no direct connection between the primaryPartUsageType and the allowed specifications for the description of a PartUsage.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstanciatedUsage" type="xs:IDREFS" minOccurs="0"/>
               <xs:element name="PartOrUsageRelatedSpecification"
                           type="xs:IDREFS"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the PartOrUsageRelatedSpecification(s) that describe the PartOrUsageRelatedSpecification. KBLFRM-399</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PartSubstitution" type="xs:IDREF" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartUsageSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of PartUsages.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="PartUsage"
                           type="vec:PartUsage"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the PartUsages defined by the PartUsageSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartVersion">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The PartVersion is one of the two anchors for PDM information in the VEC. All technical information about a PartVersion is contained in one or more documents. These describing elements are normally referencing to the PartVersion.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ItemVersion">
            <xs:sequence>
               <xs:element name="PartNumber" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The partNumber is the major identifier of a PartVersion. The format is user defined and respectively company specific. For all VEC-documents a PartVersion-instance can be trusted to be identical if the combination of partNumber, partVersion and companyName is identical.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PartVersion" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The partVersion specifies the version index of a part (see also partNumber).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PrimaryPartType" type="vec:PrimaryPartType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The primary type of the part defines the type of the part (e.g. ConnectorHousing, Fixing, etc.) Since the VEC supports dual use parts (e.g. Fixing &amp; WireProtection) the primary part type is necessary to define which specification associated to part is the primary character of the part. Therefore, all primary part types correspond to a PartOrUsageRelatedSpecification (e.g. ConnectorHousing --&gt; ConnectorHousingSpecification).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IsPreferredPart" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Flags a part as "preferred" by the means of being a preferred part out of a group of parts with identical technical properties. The preferred part should be used, if the other properties of a couple of parts do not allow a distinct decision.</p>
                        <p>Even though the name suggests a boolean value, this attribute has the type "string". The way in which preference is expressed varies greatly between the process and usually it is a multi-value flag and not just a yes/no answer.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PreferredUseCase"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Contains a part description from the point of view of the preferred use case. Defines the function for which the part was initially designed. (e.g. "Grommet for Hatch", "...passenger compartment"). This can be an important information for searching and selecting parts.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify additional identifiers for the PartVersion. This field must not be used for alternative PartNumbers. It is intended for identifiers others than PartNumbers, such as human readable identifiers printed on the part e.g. a number of fuse or a relay. Therefore, it does not have to be strictly unique.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Nature" type="vec:PartNature" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The<i>nature</i>specifies how the<i>PartVersion</i>can be used in the different processes or the significance of the<i>PartVersion</i>in the process.</p>
                        <p>The<i>nature</i>of a<i>PartVersion</i>is normally inherent and does not change. If the<i>nature</i>the underlying part changes a new (other)<i>partNumber</i>is assigned to the part and respectively a new<i>PartVersion</i>is created.</p>
                        <p>It used to differentiate for example normal (productive) part numbers from preliminary (prototypic) part numbers.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Project" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the project that develops the PartVersion.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PartWithSubComponentsRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PartWithSubComponentsRole defines the instance specific properties and relationships of a part with subcomponents. A PartWithSubComponents is a composite part like an Assembly, a Module, Harness.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="PartStructureSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartStructureSpecification</i>that is instantiated by this<i>PartWithSubComponentsRole</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubComponent" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the subcomponents that belong to this instance of a PartWithSubComponents.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Path">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Describes a path in the topology. A<i>Path</i>is a continuous way through a topology without interruptions, defined by an ordered list of<i>TopologySegments</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Segment" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies an ordered list of TopologySegments the routing goes through.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PathSegment">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PathSegment is a part of the 2D presentation of a GeometrySegment2D. The complete presentation of a GeometrySegment2D is built from an ordered list of PathSegments. Each PathSegment has an ordered list of control points through which the path goes. If no curveRadius is specified the control points are connected by a direct straight line. If a curveRadius is specified, the PathSegment can be drawn by a segment of a circle which touches all control points and has the radius specified.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CurveRadius" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The radius of the curve which describes the appearance of the path segment.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ControlPoint" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">The ordered list of control points through which the PathSegment goes.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Permission">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Describes an act of acceptance together with information about the responsible person, department and company who directly provoked the approval level and status as described in the referenced Approval-instance. (see KBLFRM-229)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Permission" type="vec:TypeOfPermission">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of permission. Predefined values are: Seen, Checked, Released.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PermissionDate" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the date when the permission was stated.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Permitter" type="vec:Person" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the person who was involved in the approval process giving a certain Permission.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Person">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies all relevant data of a person.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="CompanyName" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the name of the company the person belongs to.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Department" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the department the person belongs to.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="FirstName" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the person's first name.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="LastName" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the person's last name.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="PhoneNumber"
                     type="xs:string"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the person's phone number.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="EmailAddress"
                     type="xs:string"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the person's email address.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="AliasId"
                     type="vec:AliasIdentification"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies identifiers for the<i>Person</i>in different contexts.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PinComponent">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PinComponent describes a pin of an EEComponent. A PinComponent is part of a HousingComponent and is defined by tree aspects.</p>
            <ol>
               <li>Its geometric position in the<i>HousingComponent</i>, which is defined by the<i>referencedCavity.</i>
               </li>
               <li>Its physical electrical properties, which are defined by the referenced<i>TerminalSpecification.</i>
               </li>
               <li>Its electrical behaviour, which is defined configuration dependent by its<i>PinComponentBehaviour.</i>
               </li>
            </ol>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Identification of the PinComponent, which must be distinct for all PinComponent of a HousingComponents.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the<i>PinComponent</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PinComponentType" type="vec:PinComponentType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of a<i>PinComponent</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PinSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TerminalSpecification describing the electrical connectivity aspect of the PinComponent. (see KBLFRM-300)</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedCavity" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Defines the cavity in the corresponding ConnectorHousingSpecification of the HousingComponent where the PinComponent is located. (see KBLFRM-300)</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Behaviour"
                           type="vec:PinComponentBehavior"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the configuration dependent electrical behavior of the<i>PinComponent.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PinComponentBehavior">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>PinComponentBehavior</i>specifies the electrical behavior of a<i>PinComponent.</i>Since the behavior of a pin is configuration dependent (e.g. the software deployed on an ECU) the<i>PinComponentBehavior</i>inherits from<i>ConfigurableElement.</i>Therefore, a<i>PinComponent</i>can specify multiple<i>PinComponentBehavior.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Identification of the PinComponentBehavior which identifies it from a user perspective, and which must be distinct for all PinComponentBehaviors of a PinComponent.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalDirection" type="vec:SignalDirection" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The direction of the signal on this pin.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PinType" type="vec:PinType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PinType</i>of the<i>PinComponent</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ApplianceType" type="vec:PinApplianceType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Classifies the appliance of a Pin in terms of the duration of the appliance (see PinApplianceType).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the<i>PinComponentBehaviour</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Signal" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>Signal</i>associated with the pin in this behavior.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CurrentInformation"
                           type="vec:PinCurrentInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the current information of the<i>PinComponent</i>in this<i>PinComponentBehavior</i>. Since the current values of a pin can be defined for different types and times it is possible to define multiple<i>PinCurrentInformations</i>for a<i>PinComponentBehavior</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OpticalInformation"
                           type="vec:PinOpticalInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the optical information of the pin, if it has the type optical.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="VoltageInformation"
                           type="vec:PinVoltageInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the voltage information of the<i>PinComponent</i>in this<i>PinComponentBehavior</i>. Since the voltage values of a pin can be defined for different types and times it is possible to define multiple<i>PinVoltageInformations</i>for a<i>PinComponentBehavior</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PinComponentReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PinComponentReference represents the usage of a PinComponent in the context of a PartUsage or PartOccurrence. (KBLFRM-401)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the PinComponentReference. The identification is guaranteed to be unique within the HousingComponentReference.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PinComponent" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Points to the PinComponent referenced by the PinComponent reference. (KBLFRM-401)</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalRole" type="vec:TerminalRole" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TerminalRole of PinComponentReference. This is required to specify a Mating for EEComponents with other EEComponents or a Harness. (KBLFRM-401)</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PinCurrentInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of currents for a pin of an EEComponent. A current can be further specified by a duration. Attributes of the type PinCurrentInformation normally have the multiplicity [0..*]. This means that such an attribute can have PinCurrentInformation entries for different types and durations. It must not have multiple entries for the same type and duration.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Type" type="vec:PinCurrentType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the type of the current.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Current" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The current of the pin.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Timing"
                     type="vec:PinTiming"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the timing of the<i>PinCurrentInformation.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PinOpticalInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the specification of optical information in a PinComponentBehavior.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Frequency" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The frequency of the optical signal.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Attenuation" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The attenuation of the optical pin at the defined frequency.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PinTiming">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the timing for a<i>PinCurrentInformation</i>or a<i>PinVoltageInformation</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Type" type="vec:PinTimingType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the type of the timing.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Time" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the time value of the timing.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PinVoltageInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of voltages for a pin of an<i>EEComponent</i>. A current can be further specified by a duration. Attributes of the type<i>PinVoltageInformation</i>normally have the multiplicity [0..*]. This means that such an attribute can have<i>PinVoltageInformation</i>entries for different types and durations. It must not have multiple entries for the same type and duration.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Type" type="vec:PinVoltageType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the type of the voltage.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Voltage" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The voltage of the pin.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Timing"
                     type="vec:PinTiming"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the timing of the<i>PinVoltageInformation</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PinWireMappingPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>PinWireMappingPoint</i>creates a single variance free mapping between a<i>ContactPoint</i>and a<i>PinComponentReference</i>within a<i>PinWireMappingSpecification</i>(more details there)<i>.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="ContactPoint" type="xs:IDREF"/>
         <xs:element name="PinComponentReference" type="xs:IDREF"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="PinWireMappingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>PinWireMappingSpecification</i>can be used create<b>variance free</b>mappings between a wire (represented by the contact point) and the pin of an E/E component. This is a possibility to create a shortcut in the model between a wire and its connected E/E-component (e.g. a fuse) that might be only indirectly connected to a wire (e.g. via a fuse and relay carrier). This is a relevant information for e.g. the validation of fusing. See the Pin Wire Mapping Diagram for more details.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="PinWireMappingPoint"
                           type="vec:PinWireMappingPoint"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PlaceableElementRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PlaceableElementRole defines the instance specific properties and relationships of a PlaceableElement.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="PlaceableElementSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PlaceableElementSpecification</i>that is instanced by this<i>PlaceableElementRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MeasurementPointReference"
                           type="vec:MeasurementPointReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPointReference"
                           type="vec:PlacementPointReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PlaceableElementSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the general aspects of a component that are enabling the component to be placed in a topology. All components that should have the ability to be placed on a certain position in the topology must have a PlaceableElementSpecification</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="ValidPlacementTypes" type="vec:PlacementType" maxOccurs="2">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>PlacementTypes</i>that are valid for this element.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MeasurementPoint"
                           type="vec:MeasurementPoint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>MeasurementPoints</i>of a<i>PlaceableElement</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint"
                           type="vec:PlacementPoint"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PlacementPoints</i>of a<i>PlaceableElementSpecification</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Placement" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A placement defines the placement of a PlaceableElementRole onto a Topology. For the definition of the place on the Topology, Locations are used. A Placement can either be a placement on discrete points (OnPointPlacement) or on an area of the topology (OnWayPlacement).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Location. The identification is guaranteed to be unique within the PlacementSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Type" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify additional type information of the placement.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IsOnTopOf" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies constraints on ordering of Placements. All referenced Placements must be below (nearer to the center of the Segment) this Placement. (see KBLFRM-171)</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacedElement" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the PlaceableElementRoles placed by the Placement.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PlacementPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines a point on the component which can be placed explicitly in the topology (e.g. opening in a grommet, the entry point of a connector housing). If a PlacementPoint requires further specification for a certain component type (e.g. the entry point of a connector housing), this is done by an element specific for the component type, which related to the placement point.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the PlacementPoint. The identification is guaranteed to be unique within a component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SegmentDiameter" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the valid segment diameter range for which this<i>PlacementPoint</i>is suitable.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SupplementaryParts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartRelations</i>that specify supplementary parts for this<i>PlacementPoint</i>, e.g. cable ties for attaching the component on the harness.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PlacementPointPosition">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the position of a PlacementPoint within the coordinate system of the component. PlacementPoints are points where a component is attached to a<i>TopologySegment.</i>Therefor a<i>PlacementPointPosition</i>can define a tangent vector (in the coordinate system of the component) for a segment that is connected to the<i>PlacementPoint.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:LocalPosition">
            <xs:sequence>
               <xs:element name="Tangent" type="vec:CartesianVector3D" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>A vector in the direction of the tangent on the<i>TopologySegment</i>that is attached to the<i>PlacementPoint</i>represented by this instance. The vector is defined in the coordinate system of the 3D model of the component.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PlacementPointReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>PlacementPointReference</i>is the instance of a<i>PlacementPoint</i>in the context of an<i>OccurrenceOrUsage</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the PlacementPointReference. The identification is guaranteed to be unique within the containing PlaceableElementRole.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PlacementPoint</i>that is instanced by this<i>PlacementPointReference.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UsedSupplementaryParts" type="xs:IDREFS" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PlacementSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of placements.<i>Placements</i>are used to connect<i>OccurrenceOrUsages</i>with a topology.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Dimension"
                           type="vec:Dimension"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Dimensions defined by the PlacementSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Placement"
                           type="vec:Placement"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Placements defined by the PlacementSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PluggableTerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A PluggableTerminalRole defines the instance specific properties and relationships of a pluggable terminal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalRole"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PluggableTerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of pluggable terminals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalSpecification">
            <xs:sequence>
               <xs:element name="TerminalType" type="vec:PluggableTerminalType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the type of the terminal. The type defines constraints about the numbers of wire and terminal receptions and their relations.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PotentialDistributorSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the properties of a potential distributor (e.g. a joint connector).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="Screwable" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines if the<i>PotentialDistributor</i>can be screwed by itself to be fixed. This fixation is a non-electrical connection. If the<i>PotentialDistributor</i>can be fixated electrical (like a ring terminal) it shall have one<i>PinComponent</i>with a<i>RingTerminalSpecification</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the bolt for which the potential distributor is designed for.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltNominalSize"
                           type="vec:TerminalBoltNominalSize"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the size (diameter) of the bolt for which the potential distributor is designed for in a nominal way (e.g. "M8").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltType" type="vec:TerminalBoltType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the bolt to which the potential distributor is compatible.</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PowerConsumption">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the power consumption of an<i>EEComponent</i>. An<i>EEComponent</i>can have multiple different<i>PowerConsumptions</i>e.g. standby, maximum. An<i>EEComponent</i>can have multiple<i>PowerConsumptions</i>but must not have more than one<i>PowerConsumptions</i>of the same<i>type</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Type" type="vec:PowerConsumptionType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The type of a<i>PowerConsumption</i>. This should be an enumeration of values defined in a conformance class.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Value" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the power consumption for this type of<i>PowerConsumption</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="Project">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a certain vehicle project. Instances of this class are assumed to be constant. Thus, this is located directly under VEC-root element.</p>
            <p>A vehicle project can be some abstract or concrete node in the product structure, addressed by the car classification levels.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="CarClassificationLevel2" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Provides a classification according to "CC8 Recommended Practices Specification and Configuration, Product Structures". Car classification is the identification of a set of similar cars to be offered to the market. Level 2 stands for "Technical information / platform" and reflects the level of a product class in a BoM system which represents a main technical product base (e.g. project, platform, engineering series etc.). In some cases, this level carries a complete BoM ("Maximum BoM") for a project, platform, engineering series etc. This level is in some cases called technical documentation.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CarClassificationLevel3" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Provides a classification according to "CC8 Recommended Practices Specification and Configuration, Product Structures". Car classification is the identification of a set of similar cars to be offered to the market. Level 3 stands for "Configuration information / product family" where all variant control mechanisms are attached.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CarClassificationLevel4" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Provides a classification according to "CC8 Recommended Practices Specification and Configuration, Product Structures". Car classification is the identification of a set of similar cars to be offered to the market. Level 4 stands for "Furthest pre-configured abstract product class" and represents the furthest configured class of a product, which is not yet a real product. E.g. this could be a complete vehicle, engine, gearbox etc. which has not been evaluated against customer special choices or an abstract vehicle, engine, gear-box etc. which could become a real one after the associated BoM is evaluated. The purpose of this level of a product class instance is in any case to reflect that level of product class of a BoM system which leads to the individual BoM for a single product.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the development order number (car or engine project)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional information about the item.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ProtectionMaterialLength">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the material length of a<i>WireProtectionRole</i>. A<i>WireProtectionRole</i>can have multiple lengths of different types but must not have more than one length of the same type.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="LengthValue" type="vec:NumericalValue"/>
         <xs:element name="ValueDetermination" type="vec:ValueDetermination"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="RelaySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of the electrological aspects of a relay.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:EEComponentSpecification">
            <xs:sequence>
               <xs:element name="IMax" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the maximum current allowed for the relais.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RelaisType" type="vec:RelaisType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The type of the relay (switching behaviour). This is an OpenEnumeration, for values see<i>RelaisType.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LowNoise" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines if the relais switch with low noise / silently or not.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ApplianceType" type="vec:RelaisApplianceType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the appliance type of a relais.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RequirementsConformanceSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>RequirementsConformanceSpecification</i>can be used to express the conformance of a<i>PartVersion</i>(or a group of<i>PartVersions</i>). The<i>PartVersions</i>to which this<i>RequirementsConformanceSpecification</i>applies are expressed through the<i>describedPart</i>reference.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="ConformanceStatement"
                           type="vec:RequirementsConformanceStatement"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RequirementsConformanceStatement">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>RequirementsConformanceStatement</i>states that the<i>PartVersions</i>referenced by the parent<i>RequirementsConformanceSpecification</i>satisfy or do not satisfy the requirements defined in the associated<i>DocumentVersion</i>(via the<i>requirementsSpecification</i>association)<i>.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Satisfies" type="xs:boolean">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines if the<i>describedParts</i>satisfy (satisfy = true) or explicitly fail (satisfy = false) to conform with the<i>requirementsSpecification</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:LocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>A free text description / additional information / comment for the<i>RequirementsConformanceStatement.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="DocumentVersion" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>References the<i>DocumentVersion</i>that contains the requirements to which a conformance statement shall be expressed.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="RingTerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A RingTerminalRole defines the instance specific properties and relationships of a ring terminal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalRole"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RingTerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of ring terminals. These are the counterparts to bolt terminals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalSpecification">
            <xs:sequence>
               <xs:element name="BoltDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the bolt for which the ring terminal is designed for in a numerical way.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltNominalSize"
                           type="vec:TerminalBoltNominalSize"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the size (diameter) of the bolt for which the ring terminal is designed for in a nominal way (e.g. "M8").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Thickness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the thickness of the contact surface of the ring terminal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BoltType" type="vec:TerminalBoltType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the bolt to which the ring terminal is compatible.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OutsideDimension" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the diameter of the circle around the center of the bolt which passes through the farthest outside point of the contact surface of the ring terminal. (see KBLFRM-311)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TorsionProtection" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the ring terminal is torsion protected or not. (see KBLFRM-311)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RobustnessProperties">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of robustness properties. Robustness of a component is specified as a level of robustness against a specific influence (e.g. oil, water, UV-light). The influence is specified by the<i>class</i>and the level is specified by the<i>classKey</i>. Valid robustness classes and keys are specified by the reference system. Attributes of the type RobustnessProperties normally have the multiplicity [0..*]. This means that such an attribute can have RobustnessProperties entries for different<i>classReferenceSystems</i>and<i>classes</i>.</p>
            <p>Constraints for the multiplicity of entries for the same<i>class</i>and<i>classReferenceSystem</i>are defined by the reference system. It most cases an element can have only one single value for a<i>class</i>and<i>classReferenceSystem.</i>This applies for example to cumulative ratings where a "higher" rating includes all "lower" ratings. However, there are reference systems where this is not true, for example in the "ISO 20653 - Liquid Ingress Protection" a component rated as IPX7 is not automatically rated IPX5 and vice versa. In these case, multiple values (<i>classKey</i>) for a single<i>c</i>
               <i>lass</i>and<i>classReferenceSystem</i>are allowed.</p>
            <p>Note: Most reference systems just define one class or at least some of the possible classes, but not all (e.g. the ISO 20653 defines "Solid Particle Protection" and "Liquid Ingress Protection", whereas the ISO 6722 defines "Ambient Temperature" among others).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Class" type="vec:RobustnessClass">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the identifier of a robustness class defined by the robustness class reference system. Robustness classes are for example: oil, petrol, UV, water. Specific known and used classes are defined in an open enumeration.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ClassKey" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a key for the robustness level defined in the specified robustness class (e.g. A, B, C). The classKey is the key as specified in the reference system and no additional syntax or prefixes, e.g. for ISO 20653 (Ingress Protection) it is<i>"9K"</i>and not<i>"IPX9K".</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ClassReferenceSystem" type="vec:RobustnessClassReferenceSystem">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the robustness class reference system, which is defining possible values and the semantic of robustness classes and robustness class keys. Specific known and used reference systems are defined in an open enumeration.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="HasRobustness" type="xs:boolean">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies if the described element has a robustness in the specified robustness class. (see KBLFRM-260)</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Description"
                     type="vec:LocalizedString"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>On optional human readable description of the robustness (e.g. the name).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="Role" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Role is the corresponding mechanism for OccurrenceOrUsages to the PartOrUsageRelatedSpecifcations for PartVersions or PartUsages. The PartOrUsageRelatedSpecifcations are describing a certain aspect of the master data of a part. A Role describes the corresponding properties and relationships for instances of a part (e.g. the usage specific properties of a wire occurrence like the length or the contacting).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Role. The identification is guaranteed to be unique within the OccurrenceOrUsage.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RoutableElement" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A RoutableElement is an element that can be routed, which mean it is possible to assign it to a Path in the Topology.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Routing">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Routing is the assignment of a RoutableElement (Connection or WireElementReference) to a path in the topology.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Routing. The identification is guaranteed to be unique within the RoutingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SpecialRoutedComment"
                           type="vec:LocalizedString"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Allows the specification of an explanation why this routing has been routed in a special way.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SpecialRouted" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies that routing has been created in a special way. This means it has not been calculated in the standard way, because for some reason the result of the standard calculation has been inconvenient.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MandatorySegment" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies some constraints for the routing. If the path of the routing is recalculated the referenced segments must be visited.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RoutedElement" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Element that is routed.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Path" type="vec:Path">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies a Path on the topology that is used for the routing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RoutingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of Routings.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Routing"
                           type="vec:Routing"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Routings described by the RoutingSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SIUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The SIUnit class can define quantities in the terms of the SI-Unit-System by specifying the corresponding SI prefix (optional) and a SI unit name. The usage of SI units must be the preferred way of expressing units, since these units can be easily translated into other SI units.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="SiUnitName" type="vec:SiUnitName">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of SI unit (e.g. metre, second,...)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SiPrefix" type="vec:SiPrefix" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the prefix of the SI unit (e.g. milli, centi, mirco,...)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SealedCavitiesAssignment">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>SealedCavitiesAssignment</i>groups the cavities of ONE connector that are sealed by a MultiCavityPlug. If a MultiCavityPlug fits into more than one connector, than there are as many<i>SealedCavitiesAssignments</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="SealedCavities" type="xs:IDREFS">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the Cavities that are sealed.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="SegmentConnectionPoint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a point where the connector can be attached to the topology (sometimes called bundle position point or insertion point).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the SegmentConnectionPoint. The identification is guaranteed to be unique within the ConnectorHousingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PlacementPoint</i>that represents this<i>SegmentConnectionPoint</i>in a<i>PlaceableElementSpecification.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReachableCavities" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>Cavities</i>that are reachable with wires through this<i>SegmentConnectionPoint.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ModularSlotAddOns"
                           type="vec:ModularSlotAddOn"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="CavityAddOns"
                           type="vec:CavityAddOn"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SegmentConnectionPointHC">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a point where the<i>HousingComponent</i>can be attached to the topology [if required] (sometimes called bundle position point or insertion point).</p>
            <p> </p>
            <p>
               <i>Note: The suffix HC is justified by the fact that class names must be unique within the model and the name SegmentConnectionPoint is already used within the ConnectorHousingSpecification. However, the represented semantics of the two connection points are so similar that the use of actually different names for both would rather have led to confusion. So SegmentConnectionPointHC actually is short hand for "SegmentConnectionPoint within HousingComponent".</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string"/>
               <xs:element name="WireAddOn" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectorSegmentConnectionPoint"
                           type="xs:IDREF"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>SegementConnectionPoint</i>
                        <i>ConnectorHousingSpecification</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PlacementPoint</i>that represents this<i>SegmentConnectionPoint</i>in a<i>PlaceableElementSpecification.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SegmentCrossSectionArea">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the cross-section area of a segment. For the data exchange the cross-section area is used and not the diameter, because the diameter is only a valid measure for circular segments. For circular segments, the diameter and the cross-section area can be translated into each other without the loss of information. Attributes of the type SegmentCrossSectionArea normally have the multiplicity [0..*]. This means that such an attribute can have SegmentCrossSectionArea entries for different crossSectionAreaTypes and valueDeterminations. It must not have multiple entries with the same crossSectionAreaType and valueDetermination.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Area" type="vec:NumericalValue">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the value of the cross-section area of the segment.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ValueDetermination" type="vec:ValueDetermination">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the method for determination of the value.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CrossSectionAreaType"
                           type="vec:SegmentCrossSectionAreaType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the cross-section area of the segment. Different types are for example needed to differentiate between the designed space of a segment and the required space (e.g. calculated from the wires going through the segment).</p>
                        <p>Attribute is defined as an<i>OpenEnumeration.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SegmentLength">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the length of a<i>TopologySegment</i>. The length of a<i>TopologySegment</i>is defined as the length of the centerline of the segment.</p>
            <p>Attributes of the type SegmentLength normally have the multiplicity [0..*]. This means that such an attribute can have SegmentLength-entries for different classifications. It must not have multiple entries with the same classification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Length" type="vec:NumericalValue">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the TopologySegment.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Classification" type="vec:LengthClassification">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the classification of the segment length.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SegmentLocation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a point on a TopologySegment as a Location.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Location">
            <xs:sequence>
               <xs:element name="Offset" type="vec:NumericalValue">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the offset / distance of the Location to the anchor of the location.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Anchor" type="vec:AnchorType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the location on the<i>TopologySegment</i>is defined as on offset relative to the startNode of the TopologySegment or the endNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedSegment" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>TopologySegment</i>on which the Location is located.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SegmentMapping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the relationship of an inner segment to its outer topology. The relationship to the outer topology is expressed with a<i>Path.</i>
            </p>
            <p>
               <i> </i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="InnerSegment" type="xs:IDREF"/>
         <xs:element name="MappedPosition" type="vec:Path"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="SheetOrChapter">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Documents can be structured into sheets or chapters. Since it is possible, that one document describes a couple of parts it is necessary to be able to specify which sheet or chapter contains the description of which part. (see KBLFRM-308)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The identification of the sheet or chapter within the document. This value must be distinct within the context of a document.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SheetNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The sheetNumber is the major identifier of a SheetOrChapter. The format is user defined and respectively company specific. This field has to be used if a SheetOrChapter has its own "DocumentNumber".</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SheetVersion" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The sheetVersion specifies the version index of a sheet (see also sheetNumber)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for additional, human readable information about the SheetOrChapter.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SheetFormat" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the format of the SheetOrChapter. This is an alias for a specific sheet / paper size (e.g. DINA4). If both attributes are defined the<i>SheetSize</i>takes precedence.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SheetSize" type="vec:Size" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedPart" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">The association is an informative link which PartVersions are described by the SheetOrChapter.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ChangeDescription"
                           type="vec:ChangeDescription"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the change history of the SheetOrChapter.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Specification"
                           type="vec:Specification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Specifications contained in the SheetOrChapter. All structured, technical information in the VEC is described by such Specifications.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ShieldSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the properties of a shield.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConductorSpecification">
            <xs:sequence>
               <xs:element name="OpticalTissueDensity" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the optical tissue density of the strands of a shield. This is defined as a value in percentage.</p>
                        <p>
                           <i>Should only be used for ShieldSpecifications with type=Braided.</i>
                        </p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WindingType" type="vec:FoilShieldWindingType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the type of winding of the shield.</p>
                        <p>
                           <i>Should only be used for ShieldSpecifications with type=Foil.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ShrinkableTubeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification of tubes that are shrinkable.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TubeSpecification">
            <xs:sequence>
               <xs:element name="ShrinkingFactor" type="xs:double" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the factor of shrinking for the tube.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaximumLongitudinalShrinkage"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the shrinkage in longitudinal direction.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Resin"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the material of the resin usable for this shrinkable tube.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WaterAbsorbtion" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the water absorption of the shrinkable tube specification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Signal">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a signal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Signal. The identification is guaranteed to be unique within the SignalSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalName" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Name of the Signal, which is not guaranteed to be unique and is normally function oriented.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ClampName" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the clamp e.g. KL15, KL30, KL31.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the<i>Signal</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>A human readable description of the signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalInformationType"
                           type="vec:SignalInformationType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the information type of the signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalTransmissionMediumType"
                           type="vec:SignalTransmissionMediumType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the transmission medium for the signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalForm" type="vec:SignalForm" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the form of the signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalCurve" type="vec:SignalCurve" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the curve of the signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SignalType" type="vec:SignalType" minOccurs="0"/>
               <xs:element name="SignalSubType" type="vec:SignalSubType" minOccurs="0"/>
               <xs:element name="CurrentType" type="vec:CurrentType" minOccurs="0"/>
               <xs:element name="NominalVoltage" type="vec:NominalVoltage" minOccurs="0"/>
               <xs:element name="DataRate" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the data rate of the signal. This applies only to signals with<i>signalType = 'information</i>' and<i>signalInformationType = 'digital'</i>. For the numerical value, an appropriate IECUnit combination shall be used (e.g. GBit / Second).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NetType" type="xs:IDREF" minOccurs="0"/>
               <xs:element name="RecommendedConductorSpecification"
                           type="xs:IDREF"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a recommended Specification for the cores that implement this signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RecommendedInsulationSpecification"
                           type="xs:IDREF"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a recommended Specification for the insulation (e.g. the color) that implements this signal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireTupleRequirements" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines a requirement for wire tuples.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SignalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of a list of valid signals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Signal"
                           type="vec:Signal"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the signals.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SimpleValueProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with a simple value (string).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the<i>CustomProperty.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Size">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the size of an element by width &amp; height. Per definition is width &gt; height.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Width" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The width of the element.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Height" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The height of the element.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="Slot">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A slot is a group of cavities in a connector housing with own properties. The design of a slot is described in a SlotSpecification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AbstractSlot">
            <xs:sequence>
               <xs:element name="ColorInformation"
                           type="vec:Color"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the color of the slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SealingType" type="vec:SlotSealingType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the sealing of the slot, if sealed. The values are defined in an<i>OpenEnumeration</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PermittedTerminalSupplierCompanyNames"
                           type="xs:string"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If this attribute is defined, it is only permitted to use terminals of one of the listed terminal suppliers.</p>
                        <p>The used company name shall be same as the one used as<i>PartVersion.companyName</i>for part numbers of this supplier.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SupplementaryParts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartRelations</i>that specify supplementary parts for this slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Cavity" type="vec:Cavity" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the Cavities forming the Slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SlotCoupling">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>SlotCoupling</i>defines the mapping between two slots of the<i>ConnectorHousingRoles</i>associated with the<i>CouplingPoint</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0"/>
               <xs:element name="FirstSlot" type="xs:IDREF"/>
               <xs:element name="SecondSlot" type="xs:IDREF"/>
               <xs:element name="CavityCoupling"
                           type="vec:CavityCoupling"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SlotLayout">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>For regularly laid out slots the slot layout describes the positions of the cavities</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="GridX" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The horizontal distance between the center points of two cavities.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="GridY" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The vertical distance between the center points of two cavities.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="RowCount" type="xs:integer" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The number of cavity rows of the slot.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="SlotMapping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the mapping of two slots contained PartVersion A &amp; B of the containing Mapping-object.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="IdentificationA" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the Slot on side A</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="IdentificationB" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the Slot on side B</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CavityMapping"
                     type="vec:CavityMapping"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en"/>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="SlotReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>SlotReference</i>represents the usage of a<i>Slot</i>in the context of PartUsage or PartOccurrence.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:AbstractSlotReference">
            <xs:sequence>
               <xs:element name="UsedSupplementaryParts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>This is the relationship of the supplementary parts actually used in this<i>SlotReference.</i>This is the actual selection of the potential supplementary parts defined in the corresponding<i>Slot.supplementaryParts</i>association.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CavityReference"
                           type="vec:CavityReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the CavityReferences used in the SlotReference.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SlotSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of slots.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="EmvProtectionRequired" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies whether the slot needs EMV protection.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Gender" type="vec:SlotGender" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the gender of the slot. Valid values are defined in an open enumeration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LayoutType" type="vec:SlotLayoutType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the layout of the slot from a mechanical / geometrical point of view.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SecondaryLocking" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies whether the slot supports secondary locking.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NumberOfCavities" type="xs:integer">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The possible number of cavities in the layout defined by the SlotSpecification. This includes all cavities in the layout. The actual Slot can define specific cavities in the layout as "not available".</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SlotLayout" type="vec:SlotLayout" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the layout associated with this slot.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SoundDampingClass">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of a sound damping class. The sound damping class of a component is specified as a level of sound damping. The level is specified by the<i>classKey</i>. Valid keys are specified by the<i>referenceSystem</i>. Attributes of the type<i>SoundDampingClass</i>normally have the multiplicity [0..*]. This means that such an attribute can have<i>SoundDampingClass</i>entries for different<i>referenceSystems</i>. It must not have multiple entries for the same<i>referenceSystem</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="ClassKey" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a key for the level defined in the sound damping class (e.g. A, B, C).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ReferenceSystem" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The identification of the sound damping class reference system, which is defining possible values and the semantic of sound damping keys.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="SpecificRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A SpecificRole is the possibility to define instance specific properties with custom properties (see ExtendableElement). This is necessary, if the part is described by custom properties of a PartOrUsageRelatedSpecification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="SpecificRoleType" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type for role.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Specification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartOrUsageRelatedSpecification</i>that is instantiated by this<i>SpecificRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Specification" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract super-class for all specifications. Every technical information exchanged with the VEC is contained in the different specializations of a specification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the specification. The identification is guaranteed to be unique within the document containing the specification. For all VEC-documents a Specification-instance can be trusted to be identical if the DocumentVersion-instance is the same (see DocumentVersion) and the identification of the Specification is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the specification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SpliceTerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A SpliceTerminalRole defines the instance specific properties and relationships of a splice terminal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalRole">
            <xs:sequence>
               <xs:element name="SpliceType" type="vec:SpliceType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of splice (inline, end).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InsulationState" type="vec:InsulationState" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the insulation state of the splice, in other words is electrically insulated or not.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SpliceTerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of splice terminals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TerminalSpecification"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="StripeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a stripe which has fixed length and width. A stripe is a textile, foam or similar piece with fixed length &amp; width that is wrapped around the harness.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:WireProtectionSpecification">
            <xs:sequence>
               <xs:element name="Length" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the stripe.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SegmentDiameter" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the valid segment diameter range for which the stripe can be used.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Width" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the width of the stripe.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Thickness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the thickness of the stripe (adhesive + backing).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SwitchingState">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>SwitchingState</i>defines a certain static state of an<i>EEComponent</i>. Under which conditions or when such a state applies, should be described in an external description model.</p>
            <p>A<i>SwitchingState</i>references a collection of<i>InternalComponentConnections</i>, with the semantic that these connections exist (and only these connections) when the switching state is active.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Identification of the SwitchingState, which must be distinct for all SwitchingStates of an EEComponent.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SwitchedConnections" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>InternalComponentConnections</i>that are switched by this<i>SwitchingState.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TapeRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specific<i>WireProtectionRole</i>for instances of<i>TapeSpecification.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:WireProtectionRole">
            <xs:sequence>
               <xs:element name="TapeOverlap" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the amount of overlap two rounds of taping around a segment have, as an absolute value. A negative value means, that there is a gap between two rounds.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TapeOverlapRelative" type="xs:double" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the amount of overlap two rounds of taping around a segment have, as a relative value. A negative value means, that there is a gap between two rounds. Values are defined as a factor, not as a percentage. Values can be between 1.0 and negative "infinity".</p>
                        <p>
                           <b>Examples:</b>An overlap of 1.0 defines that the second round is placed exactly on top of the first one. An overlap of 0.5 specifies that one half of the second round is on top of the first round (50% overlapping), a value of 0 specifies, that there is no overlap, but also no gap. A value of -2.0 specifies that there is a gap twice the width of the tape between two rounds.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TapingDirection" type="vec:TapingDirection" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the direction of the taping.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Gradient" type="vec:ValueWithUnit" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the gradient of the taping.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WindingType" type="vec:WindingType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the type of the tape's winding (see<i>WindingType</i>).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WindingFirmness" type="vec:WindingFirmness" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the firmness of the tape's winding (see WindingFirmness).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TapeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of tapes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:WireProtectionSpecification">
            <xs:sequence>
               <xs:element name="Backing"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the material of carrier of the tape, on which the adhesive material is applied.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Adhesive"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the adhesive material of the tape.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Width" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the width of the tape.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Thickness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the thickness of the tape (adhesive + backing).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CoilCoreDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the inner diameter of the coil on which the tape is delivered.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TemperatureInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid temperature ranges for a general technical part. A part can have different valid temperature ranges in different scenarios e.g. operating temperature, storage temperature, processing temperature, environment temperature. A class can own multiple TemperatureInformations but must not have more than one TemperatureInformations of the same temperatureType.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="TemperatureRange" type="vec:ValueRange" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the allowed temperature range for this type of temperature.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="TemperatureType" type="vec:TemperatureType" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The type of a TemperatureInformation.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="TerminalCurrentInformation">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Allows the definition of valid current ranges for a terminal. A current range is always defined for a coreCrossSectionArea and a nominal voltage. Attributes of the type CurrentRangeInformation normally have the multiplicity [0..*]. This means that such an attribute can have CurrentRangeInformation entries for different coreCrossSectionAreas and nominalVoltages. It must not have multiple entries for the same coreCrossSectionAreas and nominalVoltages.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="CurrentRange" type="vec:ValueRange">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the valid current range for the terminal. It is defined as a value range, because there are terminals where minimum current is needed to avoid corrosion.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="NominalVoltage" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the nominalVoltage for which the CurrentRangeInformation is valid.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="CoreCrossSectionArea" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the coreCrossSectionArea for which the CurrentRangeInformation is valid. The coreCrossSectionArea is a relevant information, because the thermal absorption of the core depends on the cross-section area and thus is an influence factor for the valid current range.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="TerminalPairing">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>TerminalPairing</i>is a standard reference setup of exactly two terminals and a defined length of a core contacted to both terminals. The<i>TerminalPairing</i>defines physical properties that apply to this combination.</p>
            <p> </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="ContactResistance" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the resistance of the terminal pairing.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MatingForce" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the joining force of the two terminals.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UnmatingForce" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the force required to unmate the two terminals.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FirstTerminal" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the first terminal of the TerminalPairing.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedCoreSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the CoreSpecification that is used on both sides of the ContactSystem.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SecondTerminal" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the second terminal of the TerminalPairing (first and second does not imply any specific order).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TerminalPairingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of TerminalPairings.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="TerminalPairing"
                           type="vec:TerminalPairing"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the TerminalPairings described by this TerminalPairingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TerminalReception">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A TerminalReception is the area of a terminal where the contacting with another terminal (e.g. between a connector housing and a control unit) takes place. Normally the terminal reception is placed in a cavity of a connector housing.</p>
            <p>This class represents such an area on the terminal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the TerminalReception. The identification is guaranteed to be unique within the TerminalSpecification (this might be for example a reception number).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Gender" type="vec:TerminalReceptionGender" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the gender of the TerminalReception. The gender is included in the TerminalReception class in order to be able to refer the same TerminalReceptionSpecification gender independent.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalReceptionSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TerminalReceptionSpecification that specifies the TerminalReception.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TerminalReceptionReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>TerminalReceptionReference</i>is an instance of a<i>TerminalReception</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique<i>identification</i>of the<i>TerminalReceptionReference</i>. The<i>identification</i>is guaranteed to be unique within the<i>TerminalRole</i>(this might be for example a reception number).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="TerminalReception" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>References the<i>TerminalReception</i>that is instanced by this<i>TerminalReceptionReference.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="TerminalReceptionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of terminal receptions. A TerminalReception is the area of a terminal where the contacting with another terminal (e.g. between a connector housing and a control unit) takes place. Normally the terminal reception is placed in a cavity of a connector housing.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="CavityDesign" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Deprecated (since Version 1.1.4): This attribute has been marked as deprecated, as it has been replaced by the more meaningful mechanism with<i>TerminalTypes.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlatingMaterial"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the plating material of the terminal reception.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PrimaryLockingType"
                           type="vec:PrimaryLockingType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the terminal reception has a primary locking and of what type it is.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PullOutForce" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The force until the terminal is pulled out of the housing (normally a not intended case). KBLFRM-366</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ContactRangeLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the contact area (see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalType" type="vec:TerminalType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the terminal type that is associated with the terminal reception.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TerminalRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A TerminalRole defines the instance specific properties and relationships of a terminal.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="SealState" type="vec:SealState" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if this instance of a terminal should be sealed (waterproof). This applies for example to SpliceTerminals.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ComponentPort" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the ComponentPort that is realized by the referenced Terminal (OccurrenceOrUsage with TerminalRole). KBLFRM-341</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p> References the<i>TerminalSpecification</i>that is instanced by this<i>TerminalRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalReceptionReference"
                           type="vec:TerminalReceptionReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>TerminalReceptionReferences</i>of this<i>TerminalRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReceptionReference"
                           type="vec:WireReceptionReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>WireReceptionReferences</i>of this<i>TerminalRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TerminalSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of terminals. A terminal can own multiple WireReceptions &amp; TerminalReceptions.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="VoltageRange" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the allowed voltage range for the connector housing.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SealingType" type="vec:TerminalSealingType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>SealingType</i>of the Terminal. This type always refers to the sealing of the terminal itself. However, even a terminal which is not sealable can be used in sealed locations with additional measures (e.g. on the slot).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionALength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the terminal between the contact area (terminal reception) and the crimp are (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OverallLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the overall length the terminal (see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CurrentInformation"
                           type="vec:TerminalCurrentInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>TerminalCurrentInformation</i>that is applicable for the terminal.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InternalTerminalConnection"
                           type="vec:InternalTerminalConnection"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the InternalTerminalConnections of the terminal.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TerminalReception"
                           type="vec:TerminalReception"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the TerminalReceptions of the terminal described by the TerminalSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReception"
                           type="vec:WireReception"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the WireReceptions of the terminal described by the TerminalSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TerminalType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the type (system) of a terminal. The type is specified by a combination of a name for the system and an optional nominalSize.</p>
            <p>In some processes the terminal type is referred as cavity system, because the system of cavities, terminals, seals, plugs and other cavity accessories must match / be compatible.</p>
            <p>However, since a terminal has only one since type and a cavity can be compatible to more than one it is named<i>TerminalType</i>in the VEC.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Name" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the cavity (e.g. MQS, DFK, ...).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NominalSize" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the nominal size of terminals that fit into the cavity. (e.g. 2x4).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TextBasedInstruction">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A TextBasedInstruction is used to specify human readable instructions in text.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Instruction">
            <xs:sequence>
               <xs:element name="InstallationInstruction"
                           type="vec:LocalizedString"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the instruction in a human readable form. Different languages are possible.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Tolerance">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enables the specification of value ranges which can be tolerated.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="LowerBoundary" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the lower boundary for the tolerance.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UpperBoundary" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the upper boundary for the tolerance.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologyBendingRestriction">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>As the name implies, a<i>TopologyBendingRestriction</i>defines restrictions on the bendability a path in the<i>Topology.</i>There are multiple reasons, why such restrictions exist, for example:</p>
            <ul>
               <li>There is a bending restriction for a wire in the segment.</li>
               <li>The number of wires and the segment diameter is such, that excessive bending causes intolerable torsion forces on wires in the segment.</li>
               <li>Other technical reasons</li>
            </ul>
            <p>Since these restrictions can be determined using a variety of methods the VEC provides a concept to store this information for later use. This makes the information available in the downstream processes, without detailed knowledge of the determination procedure (e.g. during form board design, packaging or installation).</p>
            <p>The restriction applies to a path of segments as this can cover different case:</p>
            <ul>
               <li>a single segment</li>
               <li>two adjacent segments at a node</li>
               <li>the complete path of a wire</li>
            </ul>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="MinBendRadiusDynamic" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the minimum bend radius for the restricted path, if it is used in a dynamic environment, where it is bended repeatedly (e.g. in the grommet of the back door).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="MinBendRadiusStatic" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the minimum bend radius for the restricted path, if it is used in a static environment, where it is bended once during installation. After that it remains unchanged in its bended position during usage.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="RestrictedPath" type="vec:Path">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The path that defines the restricted way in the topology.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="TopologyBendingRestrictionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>TopologyBendingRestrictionSpecification</i>can be used to define<i>TopologyBendingRestrictions.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="TopologyBendingRestriction"
                           type="vec:TopologyBendingRestriction"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologyGroupSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A TopologyGroupSpecification defines a new Topology based on the grouped Topologies. (see KBLFRM-240)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:TopologySpecification">
            <xs:sequence>
               <xs:element name="TopologySpecification" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologyMappingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A <i>TopologyMappingSpecification</i>allows the definition of hierarchical topologies. It relates an outer topology with an enclosed inner topology.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="InnerTopolgy" type="xs:IDREF"/>
               <xs:element name="OuterTopology" type="xs:IDREF"/>
               <xs:element name="NodeMapping"
                           type="vec:NodeMapping"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="SegmentMapping"
                           type="vec:SegmentMapping"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologyNode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A TopologyNode is a point in the Topology where TopologySegments are starting and ending.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the TopologyNode.</p>
                        <p>Example: TopologyNode Ids may vary from one CAD system export to another. Therefore, the CAD system Id is improper for identification attribute. The identification shall have a value which is unique within the Topology. AliasId may be used for the CAD system Id.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the TopologyNode. The identification is guaranteed to be unique within the TopologySpecification. For all VEC-documents a TopologyNode-instance can be trusted to be the same if the TopologySpecification-instance is the same (see TopologySpecification) and the identification of the TopologyNode is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MatchingPointId" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies an identifier that can be used for matching<i>TopologyNodes</i>that belong to different<i>TopologySpecifications</i>and are actually representing the same node. Example: There are two<i>TopologySpecif</i>ications, each specifying the topology of a certain zone of the car. If the zones are adjacent, it is possible that there are<i>TopologyNodes</i>in both zones where the two topologies are connected / have contact. These "connection-nodes" would then define the same<i>matchingPointId</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ProcessingInstruction"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies processing instructions for the TopologyNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NodeType" type="vec:NodeType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the TopologyNode. A Node can either be an EndNode, a Junction or an Inliner.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstantiatedNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If this<i>TopologyNode</i>is an instance of another<i>To</i>
                           <i>pologyNode</i>that is defined elsewhere (e.g. the topology of an assembly), then the instantiated may be referenced here.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RealizedUsageNode" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>UsageNode</i>that is realized by this<i>TopologyNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologySegment">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>TopologySegment</i>is a distance in the Topology where no intermediate electrical contacts appear. If a Topology contains routed wires, then the wire at the beginning of a TopologySegment must be the same as in the ending.</p>
            <p>
               <i>TopologySegments</i>are a logical construct to describe the physical representation of a wiring harness topology. Therefore, a<i>TopologySegment</i>is only valid if it has a physical manifestation.<i>TopologySegments</i>with a length of 0 or less do not have a physical manifestation and are therefore<u>not</u>valid.</p>
            <p>Additionally, the usage of<i>TopologySegments</i>with a length of 0 create problems in the overall process. For example, the synchronization of 3D / 2D systems becomes harder or even impossible and the handling of wire protections on those<i>TopologySegment</i>is also unclear.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the TopologySegment. The identification is guaranteed to be unique within the TopologySpecification. For all VEC-documents a TopologySegment-instance can be trusted to be the same if the TopologySpecification-instance is the same (see TopologySpecification) and the identification of the TopologySegment is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Form" type="vec:SegmentForm" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the form of the TopologySegment. A TopologySegment can either be circular or noncircular.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional identifiers for the TopologySegment.</p>
                        <p>Example: TopologySegment Ids may vary from one CAD system export to another. Therefore, the CAD system Id is improper for identification attribute. The identification shall have a value which is unique within the Topology. AliasId may be used for the CAD system Id.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ProcessingInstruction"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies processing instructions for the TopologySegment.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="EndNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TopologyNode where the TopologySegment ends.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InstantiatedSegment" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If this<i>TopologySegment</i>is an instance of another<i>To</i>
                           <i>pologySegment</i>that is defined elsewhere (e.g. the topology of an assembly), then the instantiated may be referenced here.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="StartNode" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the TopologyNode where the TopologySegment starts.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CrossSectionAreaInformation"
                           type="vec:SegmentCrossSectionArea"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the different SegmentCrossSectionAreas of the TopologySegment.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LengthInformation"
                           type="vec:SegmentLength"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the different SegmentLengths of the TopologySegment.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of a topology. A topology consists of TopologyNodes, TopologySegments.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="TopologyNode"
                           type="vec:TopologyNode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the TopologyNodes defined by the TopologySpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TopologySegment"
                           type="vec:TopologySegment"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the TopologySegments defined by the TopologySpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologyZone">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>TopologyZone</i>divides a topology in different sections / design spaces. A<i>TopologyZone</i>may be subdivided in further<i>TopologyZone</i>. There can be multiple reasons for creating an orthogonal sectioning on a<i>Topology</i>. Therefore,<i>TopologyZones</i>can be overlapping.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the Zone (normally the name). The identification is guaranteed to be unique within the TopologySpecification. For all VEC-documents a Zone-instance can be trusted to be the same if the TopologySpecification-instance is the same (see TopologySpecification) and the identification of the Zone is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Type" type="vec:TopologyZoneType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The type of the TopologyZone. Valid values are defined in an OpenEnumeration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the zone.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AmbientTemperature"
                           type="vec:TemperatureInformation"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the ambient temperature that can occur in this zone. This can result in specific requirements for the used components.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RequiredRobustnessProperties"
                           type="vec:RobustnessProperties"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the robustness properties that are required in this zone. This can result in specific requirements for the used components (e.g. the ability for sealing).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Assignment"
                           type="vec:ZoneAssignment"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The assignments of specific topology elements to this zone.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubZone"
                           type="vec:TopologyZone"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the sub<i>TopologyZones</i>that are part the<i>TopologyZone</i>. All<i>ZoneAssignments</i>defined for subZones are automatically inherited by the parent zone.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TopologyZoneSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of TopologyZones.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Zone"
                           type="vec:TopologyZone"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>TopologyZones</i>that are part of the<i>TopologyZoneSpecification</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Transformation2D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Transformation is a geometric transformation and specifies a transformation matrix.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="A11" type="xs:double"/>
               <xs:element name="A12" type="xs:double"/>
               <xs:element name="A21" type="xs:double"/>
               <xs:element name="A22" type="xs:double"/>
               <xs:element name="Origin" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the CartesianPoint2D that is the origin of the Transformation2D.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Transformation3D">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A Transformation is a geometric transformation and specifies a transformation matrix.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="A11" type="xs:double"/>
               <xs:element name="A12" type="xs:double"/>
               <xs:element name="A13" type="xs:double"/>
               <xs:element name="A21" type="xs:double"/>
               <xs:element name="A22" type="xs:double"/>
               <xs:element name="A23" type="xs:double"/>
               <xs:element name="A31" type="xs:double"/>
               <xs:element name="A32" type="xs:double"/>
               <xs:element name="A33" type="xs:double"/>
               <xs:element name="Origin" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the coordinates of the translation.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TubeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies tubes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:WireProtectionSpecification">
            <xs:sequence>
               <xs:element name="BendRadius" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the bend radius of the tube.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InnerDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the inner diameter of a tube. In the case of a shrinkable tube, it is the diameter of the tube in the unshrinked state.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WallThickness" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the thickness of the wall of the tube.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="IsSlit" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies whether the tube is slit or not. The style of the slitting can be defined with the<i>slitStyle.</i>If a<i>slitStyle</i>is defined, it implies that<i>isSlit=true</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SlitStyle" type="vec:TubeSlitStyle" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the style of the slitting of the tube. If a<i>slitStyle</i>is defined, it implies that<i>isSlit=true</i>.</p>
                        <p>This attribute is defined as an<i>OpenEnumeration.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="NominalSize" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the nominal size of a tube. The nominal size is a name for the size of the tube that is somehow related to the inner diameter of the tube. However, it is not the inner diameter (e.g. "10.5").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SecondaryNominalSize" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the secondary nominal size of a tube. The nominal size is a name for the size of the tube that is somehow related to the inner diameter of the tube. However, it is not the inner diameter (e.g. "10.5").</p>
                        <p>The secondary nominal size shall only be used for two-parted tubes (see TubeSlitStyle = TwoParts). The secondary nominal size defines the size of the outer (larger) tube of a two-parted tube.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Shape" type="vec:TubeShape" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the shape of the cross section of the tube.</p>
                        <p>This attribute is defined as an<i>OpenEnumeration</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OuterDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the outer diameter of the tube. The outer diameter of a tube shall only be used for circular tubes (shape = Circular). For other shapes, height and width shall be used.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Height" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the height of the tube. If the height is defined, a width shall be defined, too. The height and width of a tube shall only be used for tubes that are not circular (shape != Circular). For circular shapes, the outside diameter shall be used.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Width" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the width of the tube. If the width is defined, a height shall be defined, too. The height and width of a tube shall only be used for tubes that are not circular (shape != Circular). For circular shapes, the outside diameter shall be used.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Length" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the tube if it is a predefined value.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="USUnit">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The USUnit class can define quantities in the terms of the US-Unit-System by specifying the corresponding US unit name. The US Unit System is quite similar to the imperial unit system; however, some units are defined slightly different.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Unit">
            <xs:sequence>
               <xs:element name="UsUnitName" type="vec:USUnitName">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the<i>USUnit</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Unit" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A precisely specified quantity in terms of which the magnitudes of other quantities of the same kind can be stated. The different systems to define units are represented by the subclasses of this class (e.g. SIUnit, ImperialUnit).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Exponent" type="xs:integer" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the exponent with which this unit instance should be used. In order to define square meters for example, the SIUnit "metre" with an exponent of 2 will be used. If no exponent is defined it is equivalent to the value 1.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="UsageConstraint">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a constraint of the possible usages for PartVersion or PartUsages. UsageConstraints are of part master data information. UsageConstraints specify general restrictions for the application of a PartVersion or PartUsage (e.g. a certain period of time in which the part is allowed to be used). (see KBLFRM-229)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Type" type="vec:UsageConstraintType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines if the usage constraint is positive (allowance) or negative (denial).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FromDate" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the lower bound of the time period to which the usage constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ToDate" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the upper bound of the time period to which the usage constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FromSerialNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the lower bound of a serial number range to which the usage constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ToSerialNumber" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the upper bound of a serial number range to which the usage constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ProjectPhase"
                           type="xs:string"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the project phases to which the usage constraint applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FromEffectivityControlKey" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>In the production logistics of complex products (like vehicles), the control of operation and cancellation dates of changes, features, components or the like is usually not carried out via concrete dates but via "date keys". These keys are then mapped in planning systems with concrete time specifications for certain plants or production steps. In the VEC these keys are called<i>EffectivityControlKey.</i>
                        </p>
                        <p>With the<i>FromEffectivityControlKey</i>and<i>To</i>
                           <i>EffectivityControlKey</i>a validity interval can be defined. If one of the two values is defined and the other is omitted, the meaning shall be "unbounded".</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ToEffectivityControlKey" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>See<i>FromEffectivityControlKey.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Project" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>Projects</i>to which the<i>UsageConstraint</i>applies. This means the described PartVersion is allowed / denied in the referenced UsageConstraint.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UsageNode" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>UsageNode</i>to which the<i>UsageConstraint</i>applies. This means the described<i>PartVersion</i>is allowed / denied in the referenced UsageNode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="UsageConstraintSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of usage constraints. The associated UsageConstraints are restricting the possible usages of the associated PartVersions and PartUsages.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="ConstrainedParts" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>PartVersions</i>to which this<i>UsageConstraintSpecification</i>applies.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PartUsageConstraint"
                           type="vec:UsageConstraint"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the UsageConstraints that apply to the PartVersion or PartUsages described by the UsageConstraintSpecification. The ordering of this association is relevant. The elements shall arranged in the order of ascending priority. That means, elements further back in the collection have a higher priority.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="UsageNode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>UsageNode</i>represents a position in an abstract vehicle. For example, the "Head Light Left".<i>UsageNodes</i>belong to the master data and they are defined on some companywide level. They can be used to enforce consistent naming over different projects and different development streams (e.g. between Geometry and Electrologic).</p>
            <p>A<i>UsageNode</i>can be realized by different elements in the VEC (e.g.<i>NetworkNode, OccurrenceOrUsage, TopologyNode, ComponentNode</i>).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ConfigurableElement">
            <xs:sequence>
               <xs:element name="Abbreviation"
                           type="vec:LocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies an abbreviation of the<i>UsageNode</i>. Normally this a human readable short name.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique<i>identification</i>of the<i>UsageNode</i>. The<i>identification</i>is guaranteed to be unique within the context. For all VEC-documents a<i>UsageNode-instance</i>can be trusted to be the same if the context-instance is the same and the<i>identification</i>of the<i>UsageNode</i>is the same.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies additional, human readable information about the<i>UsageNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UsageNodeType" type="vec:UsageNodeType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the type of the UsageNode. The type determines how the UsageNode is handled in the latter processes.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="UsedInProject" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>Projects</i>in which the<i>UsageNode</i>can be used.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubUsageNodes"
                           type="vec:UsageNode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="UsageNodeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>UsageNodeSpecification</i>is a container for the specification of<i>UsageNodes.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="UsageNodes"
                           type="vec:UsageNode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>UsageNodes</i>defined by this<i>UsageNodeSpecification.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ValueRange">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A pair of numerical values representing a value range.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ValueWithUnit">
            <xs:sequence>
               <xs:element name="Minimum" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Lower bound of the value range.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Maximum" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Upper bound of the value range.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ValueRangeProperty">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A custom property with a value range. (see KBLFRM-319)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:CustomProperty">
            <xs:sequence>
               <xs:element name="Value" type="vec:ValueRange">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the value of the CustomProperty.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ValueWithUnit" abstract="true">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Abstract class either for a single numerical measure or a range of numerical measures with upper, lower, or upper and lower bounds.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="UnitComponent" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">References the unit of the value.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="VariantCode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>VariantCodes are defining the literals on which VariantConfiguration are stated. Possible VariantCodes might be different for steering types, optional equipment, engine-power class.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the variant code. This is also the literal value for the VariantCode, which shall be used in the logisticControlExpressions of VariantConfigurations.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify additional identifiers for the VariantCode.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Abbreviation" type="vec:LocalizedString" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for a human readable short name, title etc. of the VariantConfiguration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CodeType" type="vec:VariantCodeType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Allows the classification of a VariantCodes.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>On optional human readable description of the variant code.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantCodeSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of variant codes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="VariantCode"
                           type="vec:VariantCode"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the individual VariantCodes defined in the VariantCodeSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantConfiguration">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A variant configuration defines a condition with which it is possible to express the inclusion or exclusion of ConfigurableElements in different variants of a product.</p>
            <p>A<i>VariantConfiguration</i>can reference another<i>VariantConfiguration</i>as<i>baseInclusion</i>. In this case, a<i>VariantConfiguration</i>can only be satisfied if its<i>baseInclusion</i>is also satisfied.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the variant configuration. The identification is guaranteed to be unique within the specification and does not change over the time.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>On optional human readable description of the variant configuration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LogisticControlString" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a logisticControlString which can be used if the variant management is not done by boolean logic.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LogisticControlExpression" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a logisticControlExpression expressed as boolean term.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConfigurationType"
                           type="vec:VariantConfigurationType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Allows the classification of a VariantConfiguration.</p>
                        <p>(see KBLFRM-250, KBLFRM-314, KBLFRM-290)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="BaseInclusion" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>A<i>VariantConfiguration</i>can only be satisfied if its<i>baseInclusion</i>is satisfied as well.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantConfigurationSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of variant configurations.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="VariantConfiguration"
                           type="vec:VariantConfiguration"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the individual VariantConfigurations defined in the VariantConfigurationSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantGroup">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>With a VariantGroup it is possible to group VariantCodes. The semantic of this grouping should be defined with the groupType (e.g. composition, choice, etc.).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the variant code.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify additional identifiers for the VariantGroup.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Abbreviation" type="vec:LocalizedString" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for a human readable short name, title etc. of the VariantGroup.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>On optional human readable description of the variant group.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GroupType" type="vec:VariantGroupType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Allows the classification of a VariantGroups into different types. For example: - composition (e.g. winter package) - choice (e.g. right hand / left hand driving). Agreed literals for this attribute are defined in the OpenEnumeration<i>VariantGroupType.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="VariantCode" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the VariantCodes that are member of the VariantGroup.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantGroupSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of variant groups.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="VariantGroup"
                           type="vec:VariantGroup"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the individual VariantGroups defined in the VariantGroupSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantStructureNode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>
               <i>VariantStructureNodes</i>can be used to define a hierarchical structure on<i>VariantGroups</i>. Every<i>VariantStructureNodes</i>can reference<i>VariantGroups</i>and<i>VariantStructureNodes</i>as children.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the<i>VariantStructureNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AliasId"
                           type="vec:AliasIdentification"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room to specify additional identifiers for the<i>VariantStructureNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Abbreviation" type="vec:LocalizedString" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Room for a human readable short name, title etc. of the<i>VariantStructureNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Description"
                           type="vec:AbstractLocalizedString"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>On optional human readable description of the<i>VariantStructureNode</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ContainedGroups" type="xs:IDREFS" minOccurs="0"/>
               <xs:element name="ChildNodes"
                           type="vec:VariantStructureNode"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VariantStructureSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification to define any hierarchical structure on variant groups (e.g. by the means of a functional organization). The hierarchy starts with a single root node.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="RootNode" type="vec:VariantStructureNode">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="VecContent">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The VecContent is the XML-Root node for any VEC-Document.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="VecVersion" type="vec:VecVersion">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the version of the VEC used for the file.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GeneratingSystemName" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the name of the system that has generated the VEC-file.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DateOfCreation" type="xs:dateTime" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the date of creation of the VEC-file.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GeneratingSystemVersion" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the version of the system that has generated the VEC-file.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="StandardCopyrightInformation" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>CopyrightInformation</i>that is in effect for the complete content of this<i>VecContent</i>. It is applied to all<i>ItemVersions</i>that do not references their own individual<i>CopyrightInformation.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Contract"
                           type="vec:Contract"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the contracts used in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CopyrightInformation"
                           type="vec:CopyrightInformation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the CopyrightInformation used in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="DocumentVersion"
                           type="vec:DocumentVersion"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the DocumentVersions contained in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ItemHistoryEntry"
                           type="vec:ItemHistoryEntry"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ItemVersionHistoryEntries for ItemVersions contained in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PartVersion"
                           type="vec:PartVersion"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the PartVersions contained in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Project"
                           type="vec:Project"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Projects used in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Unit" type="vec:Unit" minOccurs="0" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the Units used in the VEC-file.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireElement">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireElement</i>specifies a<i>WireElementSpecification</i>in the context of a<i>WireSpecification</i>. This is necessary to define a unique<i>identification</i>of a<i>WireElementSpecification</i>in the context of a<i>WireSpecification.</i>Additionally, the<i>WireElement</i>serves as anchor for the instancing of a wire (<i>WireElementReference</i>) as the<i>WireElementSpecifications</i>are not uniquely related to a<i>WireSpecification</i>for reasons of reusability.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The identification of the WireElement. The identification is guaranteed to be unique within a wire and immutable. The identification is guaranteed to be the same for the same WireElement over different VEC documents.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireElementSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Reference the<i>WireElementSpecification</i>that is represented by the<i>WireElement.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubWireElement"
                           type="vec:WireElement"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>subWireElements</i>of this<i>WireElement</i>. The<i>subWireElements</i>shall be consistent with the<i>subWireElementSpecifications</i>of the<i>WireElementSpecification</i>referenced by this<i>WireElement</i>and shall resemble that hierarchy.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireElementReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A WireElementReference represents the usage of a WireElement in the context of a PartUsage or PartOccurrence. For contacting purposes, a WireElementReference has WireEnds. KBLFRM-384</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:RoutableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the WireElementReference. The identification is guaranteed to be unique within the WireRole.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Unconnected" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If this attribute is<i>true</i>, the<i>WireElementReference</i>is not connected (unused) on purpose. This can be the case for example if a multi core is used, but not all cores are necessary in a specific situation.</p>
                        <p>However, for all<i>WireElements</i>defined in the<i>WireSpecification</i>a corresponding<i>WireElementReference</i>shall exist. This attribute can be used to mark these unused cores explicitly.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelValue" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>WireElementReference</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelType" type="vec:LabelType" minOccurs="0"/>
               <xs:element name="LabelPosition" type="vec:LabelPosition" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>WireElementReference</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LabelingTechnology"
                           type="vec:LabelingTechnology"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>LabelingTechnology</i>
                        <i>WireElementReference</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Connection" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the Connection that is realized by the referenced WireElement (WireElementReference). KBLFRM-341</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionGroup" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>ConnectionGroup</i>that is realized by this<i>WireElementReference.</i>This applies normally to<i>WireElementReference</i>that have<i>subWireElements</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedWireElement" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the WireElement that is represented by the WireElementReference.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Signal" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the signal that is transmitted by the WireElementReference.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireEnd"
                           type="vec:WireEnd"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the ends of the WireElementReference for contacting purposes.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireLength"
                           type="vec:WireLength"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the different length of a wire.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireElementSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A WireElementSpecification is the basic element to describe a wire in the VEC. A WireElementSpecification can be atomic or composed recursively out of other WireElementSpecifications. A WireElementSpecification can reference an InsulationSpecification, if it has an insulation, a CoreSpecification, if it has a core or a WireGroupSpecification if it is a grouping of other WireElementSpecifications in the Wire (e.g. a multi-core wire with twisted pairs).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="Type"
                           type="vec:WireType"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the type of the wire. A wire must not have more than one type. This attribute allows more than one value for the reason, that the same type can be expressed in multiple reference systems.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MinBendRadiusDynamic" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the minimum bend radius for wire element, if it is used in a dynamic environment, where it is bended repeatedly (e.g. in grommet of the back door). (see KLBFRM-311)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MinBendRadiusStatic" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the minimum bend radius for wire element, if it is used in a static environment, where it is bended once during installation. After that it remains unchanged in its bended position during usage. (see KLBFRM-311)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="OutsideDiameter" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the outside diameter of the WireElement.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SuitedForDynamicUse" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if it is allowed to use the WireElement in a dynamic environment. (see KBLFRM-311)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Impedance" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the impedance of this wireElement. Typically used for WireElements that have subWireElements e.g. twisted pair or coax wires.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Size" type="vec:Size" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the size of a WireElement if it has not the shape of circle. If it has the shape of a circle the size is normally defined by its outside diameter.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ValidWireReceptionTypes"
                           type="vec:WireReceptionType"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the<i>WireReceptionTypes</i>that are allowed for joining with the specified<i>WireElement.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="GridSpacing" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the grid spacing. The grid spacing is the distance between the centres of two adjacent sub wire elements.</p>
                        <p>This attribute is only valid for<i>WireElementSpecifications</i>that have<i>SubWireElementSpecifications.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Shape" type="vec:WireElementShape" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Defines the shape of a<i>WireElement.</i>Circular wire elements are defined by their outsideDiameter, all others are defined by their size.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="TransmissionMediumType"
                           type="vec:TransmissionMediumType"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConductorSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If the<i>WireElement</i>has a core then the specification of the core is referenced here.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FillerSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If the<i>WireElement</i>is a filler then the specification of the filler is referenced here.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InsulationSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If the<i>WireElement</i>has an insulation then the specification of the insulation is referenced here.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="SubWireElementSpecification" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the contained subWireElements if the WireElement has sub elements. If a<i>WireElementSpecification</i>contains the same<i>WireElementSpecification</i>multiple times, then it shall be referenced as often as it occurs in the reality. Otherwise the<i>WireElementSpecification</i>wouldn't specify a wire element unambiguously, because the representation in the model would be the same, regardless of the number of sub elements. Therefore, this association must not be realized with a "set" semantic.</p>
                        <p> </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireGroupSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>If the<i>WireElementSpecification</i>is representing a wire group, then the specification of the wire group is referenced here. That means as well, that the<i>WireElementSpecification</i>shall have<i>subWireElementSpecifications</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireEnd">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A WireEnd is the end of a wire. This class mainly needed for the definition of a contacting. As a wire can be contacted on more than two ends (e.g. IDC) the WireEnd has a position on the wire.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the WireEnd. The identification is guaranteed to be unique within the WireElementReference.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PositionOnWire" type="xs:double">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the position of the WireEnd on the wire. This must be a value between 0 and 1.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionEnd" type="xs:IDREFS" minOccurs="0"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireEndAccessoryRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireEndAccessoryRole</i>defines the instance specific properties and relationships of a<i>WireEndAccessory</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="WireEndAccessorySpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>WireEndAccessorySpecification</i>that is instanced by this<i>WireEndAccessoryRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireEndAccessorySpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>
               <i>WireEndAccessorySpecifications</i>are describing parts that are used for a treatment of a wire end before the actual terminal is attached to the<i>WireEnd</i>(e.g. a ferrule).</p>
            <p>The actual specification is done by the referenced<i>WireReceptionSpecification</i>since a<i>WireEndAccessory</i>is basically just a single<i>WireReception</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="WireReceptionSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the single<i>WireReceptionSpecification</i>that is specifying the properties of the<i>WireEndAccessory</i>that are related to wire.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireGroupSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of WireGroups. Wire groups are for example used for the representation of twisted pairs.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="GroupType" type="vec:WireGroupType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the group (e.g. twisted pair, ...).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LengthOfTwist" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of twist if the wire group is representing a twisted pair.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireGrouping">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireGrouping</i>is the definition of a multi core wire in its usage. The elements of a<i>WireGrouping</i>are well defined wires (e.g. with a part number). The grouping itself is only created in its concrete usage. The most common use case is the individual definition of unshielded twisted pair wires without creating the full combinatorics of every possible core / insulation / twist combination in a part master data system (and by this creating part numbers for all of them). However, there are other use cases as well.</p>
            <p>A<i>WireGrouping</i>groups the<i>relatedWireElementReferences</i>on an equal level containedWireGroupings are on a lower level. So, in order to create something like a shielded twisted pair, one<i>WireGrouping</i>"A" that references two<i>WireElementReferences</i>is required to represent the twisted pair and another<i>WireGrouping "</i>B" that contains<i>WireGrouping</i>"A" and references the "shield wire element".</p>
            <p> The referenced<i>WireGroupSpecification</i>defines the handling of the<i>WireGrouping</i>during its assembly (e.g. twist).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the WireGrouping. The identification is guaranteed to be unique within the WireGroupingSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionGroup" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>ConnectionGroup</i>that is realized by this<i>WireGrouping.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RelatedWireElementReference" type="xs:IDREFS" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the concrete wire elements (<i>WireElementReference</i>) that are grouped by the WireGrouping.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireGroupSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>WireGroupSpecification</i>that applies to the<i>WireGrouping</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ContainedWireGroupings"
                           type="vec:WireGrouping"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>WireGroupings</i>that are contained in this<i>WireGrouping</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireGroupingSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of WireGroupings.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="WireGrouping" type="vec:WireGrouping" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the WireGroupings described by the WireGroupingSpecification.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireLength">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the length of a WireElementReference. A WireElementReference can have multiple lengths of different types but must not have more than one length of the same type.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="LengthType" type="vec:WireLengthType">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The type of the length. Possible values are defined in an open enumeration (see WireLengthType).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="LengthValue" type="vec:NumericalValue">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The length value for the type.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireMounting">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireMounting</i>defines the mounting of a wire end to terminal. If the contacting is required to be waterproof a cavity seal can be mounted additionally.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="MountedCavitySeal" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the cavity seal that is used for the wire mounting.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedWireEnd" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the wire ends that are used for the wire mounting. The minimum cardinality is one, because a wire mounting without wire end makes no sense.</p>
                        <p>The maximum cardinality is * in order to support multi crimps.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireEndAccessory" type="xs:IDREFS" minOccurs="0"/>
               <xs:element name="WireMountingDetail"
                           type="vec:WireMountingDetail"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the WireMoutingDetails, if a detailed description of the relationships between WireEnds and WireReceptions is needed.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireMountingDetail">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>With a WireMountingDetail it is possible to describe a detailed wire mounting.</p>
            <p>This is needed if the information which wire end is mounted onto which wire reception is important (e.g. coax contacts).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="ContactedWireReception" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the WireReception that is used for the WireMounting.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ReferencedWireEnd" type="xs:IDREFS">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the WireEnds that are mounted to referenced WireReception. A cardinality of more than one is allowed in order support parallel connectors, where multiple wire ends are placed on one side of the connector (one wire reception) and the other wire ends are placed on the other side of the connector (the other wire reception).</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireProtectionRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A WireProtectionRole defines the instance specific properties and relationships of a wire protection. This is a general-purpose role for instances of all types of<i>WireProtectionSpecifications</i>that do not have specific instance attributes. For<i>TapeSpecifications</i>the more specific<i>TapeRole</i>shall be used.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="ProtectionLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>The<i>ProtectionLength</i>specifies the length of the area covered by the protection. As a consequence, the<i>ProtectionLength</i>may differ from the real length of the material (e.g. for tapes).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireProtectionSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>WireProtectionSpecification</i>that is instanced by this<i>WireProtectionRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaterialLength"
                           type="vec:ProtectionMaterialLength"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireProtectionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the description of wire protections.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="SoundDampingClass"
                           type="vec:SoundDampingClass"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the class of sound damping. According to the VDA this is a value between A &amp; E. KBLFRM-311</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireReception">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A WireReception is the area of a terminal where the contacting with a wire element (e.g. by crimping) takes place. This class represents such an area on the terminal. Its description is done with a WireReceptionSpecification, which is independent from the TerminalSpecification. This allows the reuse of the specification of similar WireReception on different terminals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:ExtendableElement">
            <xs:sequence>
               <xs:element name="Identification" type="xs:string">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a unique identification of the WireReception. The identification is guaranteed to be unique within the TerminalSpecification (this might be for example a reception number).</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Angle"
                           type="vec:NumericalValue"
                           minOccurs="0"
                           maxOccurs="2">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the angles against two planes of the connector housing a wire reception can be buckled. The planes are defined in a way, that angles of  [0.0, 0.0] specify an unbuckled (regular) terminal. The two planes are perpendicular to each other and parallel to the plugging direction of the terminal (the direction of the pin).</p>
                        <p>The plane for the first angle is the plane in which the uncrimped wire reception would be, if the terminal has not been buckled. Since most terminals are cut or punched in some way out of a sheet of metal, this plane would be the same as metal sheet before further deformation.</p>
                        <p>For ring terminals the first plane is perpendicular to the bolt direction.</p>
                        <p>With a viewing direction from the wire reception to the terminal reception and the intended wire position above the terminal, buckling directions up and right are expressed by positive angles, down and left by negative angles.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlacementPoint" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>PlacementPoint</i>that represents this<i>WireReception</i>in a PlaceableElementSpecification.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReceptionSpecification" type="xs:IDREF" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">References the WireReceptionSpecification that specifies the WireReception.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireReceptionAddOn">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the wire addon required for this wire reception.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="WireAddOn" type="vec:NumericalValue">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the wire length add on needed for the wire reception.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Type" type="vec:WireAddOnType">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Defines the type of the add-on.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="WireReceptionReference">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireReceptionReference</i>is an instance of a<i>WireReception</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Identification" type="xs:string" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies a unique<i>identification</i>of the<i>WireReceptionReference</i>. The<i>identification</i>is guaranteed to be unique within the<i>TerminalRole</i>(this might be for example a reception number).</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="WireReception" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>References the<i>WireReception</i>that is instanced by this<i>WireReceptionReference.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="WireReceptionSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of wire receptions. A WireReception is the area of a terminal where the contacting with a wire element (e.g. by crimping) takes place.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="CoreCrossSectionArea" type="vec:ValueRange" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a value range for cross-section areas of cores that are compatible with the wire reception.</p>
                        <p>For wire receptions where a single core is attached to, this value defines the<i>ValueRange</i>of the<i>crossSectionArea</i>of the core. For wire receptions where more than one core is attached to (e.g. ring terminals, splices), this attribute defines the valid value range for the sum of the cross-section areas of all attached cores.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InsulationDisplacementLength"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the insulation which must be stripped off to fit to this wire reception.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MultiContact" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if it is possible to contact more than one core at the wire reception. If this attribute is set to true, the wire reception is allowed for more than one wire, but one wire is possible as well. If set to false, only one wire is allowed.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireReceptionType" type="vec:WireReceptionType" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the type of the wire reception. The wireReceptionType defines how the wire is joined with the wire reception.</p>
                        <p>This attribute is defined in an OpenEnumeration.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireElementOutsideDiameter"
                           type="vec:ValueRange"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies a value range for valid diameters a WireElement must have to fit to the wire reception.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="PlatingMaterial"
                           type="vec:Material"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the plating material of the wire reception.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="Sealable" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies if the wire reception can be sealed. (see KBLFRM-311)</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FrontBellMouthLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the front (facing the terminal reception) bell mouth of the conductor crimp (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConductorCrimpLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the conductor crimp (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="RearBellMouthLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the rear bell mouth of the conductor crimp (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CrimpConnectionLength"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the crimp area, conductor + insulation crimp (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="InsulationCrimpLength"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the insulation crimp (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="CutOffTabLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the cut off tab (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ConnectionBLength" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the length of the connection between the conductor and the insulation crimp (wire reception, see diagram "Terminal Dimensions").</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="AddOns"
                           type="vec:WireReceptionAddOn"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
               <xs:element name="ValidConductorMaterials"
                           type="vec:ConductorMaterial"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the materials of a conductor, that are valid to use with this<i>WireReceptionSpecification</i>. This material shall be matched against the<i>ConductorSpecification.material.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A WireRole defines the instance specific properties and relationships of a wire.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Role">
            <xs:sequence>
               <xs:element name="WireSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>WireSpecification</i>that is instanced by this<i>WireRole.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireElementReference"
                           type="vec:WireElementReference"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">Specifies the WireElementReferences used in the WireRole. For multi core wires more than one WireElementReference is needed.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specification for the definition of a wire. This can either be a complex multicore wire or a normal single core. In the VEC a wire is defined by one WireElement, which may be composed from other WireElements.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:PartOrUsageRelatedSpecification">
            <xs:sequence>
               <xs:element name="WireElementSpecification" type="xs:IDREF">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>References the<i>WireElementSpecification</i>that defines the properties of the top-most<i>WireElement.</i>
                        </p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="WireElement" type="vec:WireElement">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <p>Specifies the<i>WireElement</i>that represents the root of the<i>WireSpecification</i>.</p>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireTupleSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>Specification</i>to define requirements for the handling of wire / wire element tuples (pairs, triple,...) with the focus on twisting. More precisely, the allowed untwisting at the wire ends and required measures against it.</p>
            <p>This definition is made independent from the<i>WireGroup</i>, as the might be defined for the part master data (the wire on the roller). The specifications for untwisting are based on the concrete usage.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="FixationRequired" type="xs:boolean" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FixationOffset" type="vec:NumericalValue" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaximumUntwistSingleSided"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="MaximumUntwistDualSided"
                           type="vec:NumericalValue"
                           minOccurs="0">
                  <xs:annotation>
                     <xs:documentation xml:lang="en"/>
                  </xs:annotation>
               </xs:element>
               <xs:element name="FixationAccessory"
                           type="vec:PartRelation"
                           minOccurs="0"
                           maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation xml:lang="en">
                        <i>PartRelations</i>
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireTupleTermination">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireTupleTermination</i>is to define the handling of wire ends in a tuple (group). This is mostly relevant for twisted pairs / triple / tuple to define the handling of untwisting.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Fixation" type="xs:boolean" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <i>associatedWireEnds</i>
                  <i>WireTupleTermination</i>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="FixationOffset" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en"/>
            </xs:annotation>
         </xs:element>
         <xs:element name="PermittedUntwist" type="vec:NumericalValue" minOccurs="0">
            <xs:annotation>
               <xs:documentation xml:lang="en"/>
            </xs:annotation>
         </xs:element>
         <xs:element name="AssociatedWireEnds" type="xs:IDREFS" minOccurs="0"/>
         <xs:element name="WireTupleSpecification" type="xs:IDREF" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="WireTupleTerminationSpecification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>WireTupleTerminationSpecification</i>is the container specification for<i>WireTupleTerminations</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="vec:Specification">
            <xs:sequence>
               <xs:element name="WireTupleTermination"
                           type="vec:WireTupleTermination"
                           minOccurs="0"
                           maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="WireType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies a wire type. A wire type is always defined by a key value. What wire type is meant by this key value is defined by a standard reference system.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="Type" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the type of the wire (e.g. FLRY, NYFAZw). Valid values are defined by the wireTypeReferenceSystem.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="ReferenceSystem" type="xs:string">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Specifies the reference system for the wire type.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ZoneAssignment">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>ZoneAssignment</i>defines that a specific TopologySegment is affected by the<i>TopologyZone.</i>If a coverage is defined, only the parts of the Segment that have a coverage are affected. If no coverage is defined, the whole segment is affected.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="AssignedSegment" type="xs:IDREF">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The<i>TopologySegment</i>that is assigned to<i>TopologyZone</i>with this<i>ZoneAssignment.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="Coverage"
                     type="vec:ZoneCoverage"
                     minOccurs="0"
                     maxOccurs="unbounded">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Contains a set of<i>ZoneCoverages</i>that define the areas of a<i>TopologySegment</i>that is affected by the TopologyZone. If no coverage is defined, the complete segment is affected. Multiple coverages can be necessary if the<i>TopologySegment</i>zigzags in and out of the<i>TopologyZone.</i>
                  </p>
               </xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:complexType name="ZoneCoverage">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>A<i>ZoneCoverage</i>defines an area on a<i>TopologySegment</i>that lies within a<i>TopologyZone.</i>The area is defined with two<i>Locations</i>.<i>Locations</i>are the same mechanism that is used to define placements for components. The area that is in the<i>TopologyZone</i>is the area between the two locations. There is no semantic in the direction of the definition, so the assignment of first &amp; second Location is completely arbitrary.</p>
            <p>However, there are some restrictions for the definition of the locations. All locations have to be in relation to the <i>TopologySegment</i>that is referenced by the containing<i>ZoneAssignment</i>. This means the<i>Locations</i>have to be either a<i>SegmentLocation on the</i>respective<i/>
               <i>TopologySegment</i>or a<i>NodeLocation</i>on the start or end node of this particular<i>T</i>
               <i>opologySegment.</i>A<i>ZoneCoverage</i>from start to end node of a<i>TopologySegment</i>is equivalent to the complete omission of<i>ZoneCoverages</i>for a particular<i>ZoneAssignment</i>.</p>
            <p> </p>
         </xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="FirstLocation" type="vec:Location"/>
         <xs:element name="SecondLocation" type="vec:Location"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
   </xs:complexType>
   <xs:simpleType name="AliasIdentificationType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="AnchorType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of AnchorType of the SegmentLocation.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="FromStartNode">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The offset of the location is measured from the startNode of the TopologySegment.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="FromEndNode">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The offset of the location is measured from the endNode of the TopologySegment.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ApplicationConstraintType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the type of an ApplicationConstraints. Valid values are allow and deny.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Allow"/>
         <xs:enumeration value="Deny"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="BaselineContent">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration to define the state of the content of the baseline in regard of its defined scope.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="BaselineState">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration the define the valid states of a baseline.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="BoltMountedFixingBoltShape">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration for the shapes of the bolts on which the fixing can be mounted.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="BoltMountedFixingBoltType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration for the types of the bolts on which the fixing can be mounted.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="CableLeadThroughGeometry">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid values for the geometry of a<i>CableLeadThrough</i>in the sealing area.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="CableLeadThroughType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid types for CableLeadThroughs.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="CavityGeometry">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid values of the geometry of cavities in the sealing area (crimp end).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="CodingName">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ColorReferenceSystem">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the literals that shall be used for specific color reference systems.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ComponentNodeSubType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines agreed values for<i>ComponentNodeSubTypes</i>. Not all combinations of<i>ComponentNodeSubTypes</i>and<i>ComponentNodeTypes</i>are semantically correct (e.g. Lamp, Microphone, Speaker, Motor are all Actuators).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ComponentNodeType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the common agreed values for the types of a ComponentNode.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ComponentPortViewItemSide">
      <xs:restriction base="xs:string">
         <xs:enumeration value="Top"/>
         <xs:enumeration value="Bottom"/>
         <xs:enumeration value="Left"/>
         <xs:enumeration value="Right"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ConductorStructure">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the structure of the conductor according to ISO 6722-1 for ConductorSpecifications with Type = Stranded.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ConductorType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the type of the conductor, e.g. if it is rigid or stranded.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ConnectionEndGender">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the gender of a connetion end.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ConnectionGroupType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the type of physical realization that is expressed by a<i>ConnectionGroup.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ConnectorOutletDirection">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the<i>OutletDirection</i>of a connector for wires.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ContractRole">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of roles a contractor has in a contract.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="CurrentType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="DefaultDimensionType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>dimensionType</i>defines to which measurements this<i>DefaultDimension</i>applies.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="DocumentRelationType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="DocumentType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the predefined<i>DocumentTypes</i>of a<i>PartVersion.</i>A certain<i>DocumentType</i>has normally a typical set of information that is defined within its scope. E.g. a part master document contains<i>Specifications</i>that are used for the description of a defined<i>PartVersion.</i>
            </p>
            <p>
               <i>The content and the degree of information a DocumentType</i>may vary in the different processes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="FittingForm">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration to define different fitting forms.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="FoilShieldWindingType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the type of winding for foil shields. It can be folded around and along the inner wire elements like a cigarette paper or it can be wound around them in a spiral. Both types result in different manufacturing and EMC properties.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="FunctionalRequirementType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="FuseType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the values for the type a fuse. This is the geometrical type.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="GeometryType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the GeometryType.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="GrommetMountingType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="GrommetType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="HistoryEntryType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the type of relationship represented by an ItemHistoryEntry. (see KBLFRM-271)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Derivation"/>
         <xs:enumeration value="Sequence"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="HoleMountedFixingHoleShape">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="HoleMountedFixingHoleType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="HousingComponentType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the valid HousingComponentTypes. The values in this Enumeration are matching the relevant<i>PrimaryPartTypes.</i>For a description of the values see<i>PrimaryPartType.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="IECPrefix">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of IEC unit prefixes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Yobi"/>
         <xs:enumeration value="Zebi"/>
         <xs:enumeration value="Exbi"/>
         <xs:enumeration value="Pebi"/>
         <xs:enumeration value="Tebi"/>
         <xs:enumeration value="Gibi"/>
         <xs:enumeration value="Mebi"/>
         <xs:enumeration value="Kibi"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="IECUnitName">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of IEC unit names.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Bit"/>
         <xs:enumeration value="Byte"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ImperialUnitName">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of imperial unit names.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Thou"/>
         <xs:enumeration value="Inch"/>
         <xs:enumeration value="Foot"/>
         <xs:enumeration value="Yard"/>
         <xs:enumeration value="Chain"/>
         <xs:enumeration value="Furlong"/>
         <xs:enumeration value="Mile"/>
         <xs:enumeration value="League"/>
         <xs:enumeration value="FluidOunce"/>
         <xs:enumeration value="Gill"/>
         <xs:enumeration value="Pint"/>
         <xs:enumeration value="Quart"/>
         <xs:enumeration value="Gallon"/>
         <xs:enumeration value="Grain"/>
         <xs:enumeration value="Drachm"/>
         <xs:enumeration value="Ounce"/>
         <xs:enumeration value="Pound"/>
         <xs:enumeration value="Stone"/>
         <xs:enumeration value="Quarter"/>
         <xs:enumeration value="HundredWeight"/>
         <xs:enumeration value="Ton"/>
         <xs:enumeration value="Perch"/>
         <xs:enumeration value="Rood"/>
         <xs:enumeration value="Acre"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="InsulationState">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the insulation state of the splice.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="LabelPosition">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>WireElementReferences.</i>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="LabelType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="LabelingTechnology">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="LanguageCode">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of ISO language codes. (see KBLFRM-317)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Aa">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Afar</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Ab">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Abkhazian</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Af"/>
         <xs:enumeration value="Am"/>
         <xs:enumeration value="Ar"/>
         <xs:enumeration value="As"/>
         <xs:enumeration value="Ay"/>
         <xs:enumeration value="Az"/>
         <xs:enumeration value="Ba"/>
         <xs:enumeration value="Be"/>
         <xs:enumeration value="Bg"/>
         <xs:enumeration value="Bh"/>
         <xs:enumeration value="Bi"/>
         <xs:enumeration value="Bn"/>
         <xs:enumeration value="Bo"/>
         <xs:enumeration value="Br"/>
         <xs:enumeration value="Ca"/>
         <xs:enumeration value="Co"/>
         <xs:enumeration value="Cs"/>
         <xs:enumeration value="Cy"/>
         <xs:enumeration value="Da"/>
         <xs:enumeration value="De"/>
         <xs:enumeration value="Dz"/>
         <xs:enumeration value="El"/>
         <xs:enumeration value="En"/>
         <xs:enumeration value="Eo"/>
         <xs:enumeration value="Es"/>
         <xs:enumeration value="Et"/>
         <xs:enumeration value="Eu"/>
         <xs:enumeration value="Fa"/>
         <xs:enumeration value="Fi"/>
         <xs:enumeration value="Fj"/>
         <xs:enumeration value="Fo"/>
         <xs:enumeration value="Fr"/>
         <xs:enumeration value="Fy"/>
         <xs:enumeration value="Ga"/>
         <xs:enumeration value="Gd"/>
         <xs:enumeration value="Gl"/>
         <xs:enumeration value="Gn"/>
         <xs:enumeration value="Gu"/>
         <xs:enumeration value="Ha"/>
         <xs:enumeration value="Hi"/>
         <xs:enumeration value="He"/>
         <xs:enumeration value="Hr"/>
         <xs:enumeration value="Hu"/>
         <xs:enumeration value="Hy"/>
         <xs:enumeration value="Ia"/>
         <xs:enumeration value="Id"/>
         <xs:enumeration value="Ie"/>
         <xs:enumeration value="Ik"/>
         <xs:enumeration value="In"/>
         <xs:enumeration value="Is"/>
         <xs:enumeration value="It"/>
         <xs:enumeration value="Iu"/>
         <xs:enumeration value="Iw"/>
         <xs:enumeration value="Ja"/>
         <xs:enumeration value="Ji"/>
         <xs:enumeration value="Jw"/>
         <xs:enumeration value="Ka"/>
         <xs:enumeration value="Kk"/>
         <xs:enumeration value="Kl"/>
         <xs:enumeration value="Km"/>
         <xs:enumeration value="Kn"/>
         <xs:enumeration value="Ko"/>
         <xs:enumeration value="Ks"/>
         <xs:enumeration value="Ku"/>
         <xs:enumeration value="Ky"/>
         <xs:enumeration value="La"/>
         <xs:enumeration value="Ln"/>
         <xs:enumeration value="Lo"/>
         <xs:enumeration value="Lt"/>
         <xs:enumeration value="Lv"/>
         <xs:enumeration value="Mg"/>
         <xs:enumeration value="Mi"/>
         <xs:enumeration value="Mk"/>
         <xs:enumeration value="Ml"/>
         <xs:enumeration value="Mn"/>
         <xs:enumeration value="Mo"/>
         <xs:enumeration value="Mr"/>
         <xs:enumeration value="Ms"/>
         <xs:enumeration value="Mt"/>
         <xs:enumeration value="My"/>
         <xs:enumeration value="Na"/>
         <xs:enumeration value="Ne"/>
         <xs:enumeration value="Nl"/>
         <xs:enumeration value="No"/>
         <xs:enumeration value="Oc"/>
         <xs:enumeration value="Om"/>
         <xs:enumeration value="Or"/>
         <xs:enumeration value="Pa"/>
         <xs:enumeration value="Pl"/>
         <xs:enumeration value="Ps"/>
         <xs:enumeration value="Pt"/>
         <xs:enumeration value="Qu"/>
         <xs:enumeration value="Rm"/>
         <xs:enumeration value="Rn"/>
         <xs:enumeration value="Ro"/>
         <xs:enumeration value="Ru"/>
         <xs:enumeration value="Rw"/>
         <xs:enumeration value="Sa"/>
         <xs:enumeration value="Sd"/>
         <xs:enumeration value="Sg"/>
         <xs:enumeration value="Sh"/>
         <xs:enumeration value="Si"/>
         <xs:enumeration value="Sk"/>
         <xs:enumeration value="Sl"/>
         <xs:enumeration value="Sm"/>
         <xs:enumeration value="Sn"/>
         <xs:enumeration value="So"/>
         <xs:enumeration value="Sq"/>
         <xs:enumeration value="Sr"/>
         <xs:enumeration value="Ss"/>
         <xs:enumeration value="St"/>
         <xs:enumeration value="Su"/>
         <xs:enumeration value="Sv"/>
         <xs:enumeration value="Sw"/>
         <xs:enumeration value="Ta"/>
         <xs:enumeration value="Te"/>
         <xs:enumeration value="Tg"/>
         <xs:enumeration value="Th"/>
         <xs:enumeration value="Zi"/>
         <xs:enumeration value="Tk"/>
         <xs:enumeration value="Tl"/>
         <xs:enumeration value="Tn"/>
         <xs:enumeration value="To"/>
         <xs:enumeration value="Tr"/>
         <xs:enumeration value="Ts"/>
         <xs:enumeration value="Tt"/>
         <xs:enumeration value="Tw"/>
         <xs:enumeration value="Ug"/>
         <xs:enumeration value="Uk"/>
         <xs:enumeration value="Ur"/>
         <xs:enumeration value="Uz"/>
         <xs:enumeration value="Vi"/>
         <xs:enumeration value="Vo"/>
         <xs:enumeration value="Wo"/>
         <xs:enumeration value="Xh"/>
         <xs:enumeration value="Yi"/>
         <xs:enumeration value="Yo"/>
         <xs:enumeration value="Za"/>
         <xs:enumeration value="Zh">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Chinese</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Zu">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Zulu</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="LengthClassification">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of a LengthClassification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="LevelOfApproval">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The LevelOfApproval standardizes the approval levels most engineering processes have in common. See<i>Approval.levelOfApproval</i>for more details.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="LocalizedTypedStringType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="MassInformationSource">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines possible sources for<i>MassInformations</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="MultiFuseType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration for the manufacturing types of the multi-fuses.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="NetworkNodeSubType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines agreed values for<i>NetworkNodeSubTypes</i>. Not all combinations of<i>NetworkNodeSubTypes</i>and<i>NetworkNodeTypes</i>are semantically correct (e.g. Lamp, Microphone, Speaker, Motor are all Actuators).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="NetworkNodeType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the common agreed values for the Types of a NetworkNode.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="NetworkPortViewItemSide">
      <xs:restriction base="xs:string">
         <xs:enumeration value="Top"/>
         <xs:enumeration value="Bottom"/>
         <xs:enumeration value="Left"/>
         <xs:enumeration value="Right"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="NodeType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the type of a TopologyNode.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="NominalVoltage">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="OtherUnitName">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of other unit names.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Pi"/>
         <xs:enumeration value="Piece"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="PartNature">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>
               <i>OpenEnumeration</i>that defines the nature of a<i>PartVersion</i>. The nature specifies how the<i>PartVersion</i>can be used in the different processes or the significance of the<i>PartVersion</i>in the process.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PartRelationType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines how the set of<i>acessoryParts</i>referenced by a<i>PartRelation</i>should be interpreted.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Mandatory">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>
                     <i>Mandatory</i>means that in a usage of a component<u>all</u>referenced<i>acessoryParts</i>must be used.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Optional">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>
                     <i>Optional</i>means that in a usage of a component<u>some</u>referenced<i>acessoryParts</i>can be used by choice.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="OneOfAll">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>
                     <i>OneOfAll</i>means that in a usage of a component exactly<u>one</u>of the referenced<i>acessoryParts</i>must be selected.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Custom">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>Custom means, that there is some kind of custom constraints / logic between referenced<i>PartVersions</i>that has to be evaluated to determine the selected accessories.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="PartStructureContentType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration that defines standard content types for the<i>PartStructureSpecification.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PinApplianceType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Classifies the appliance of a Pin in terms of the duration of the appliance.</p>
            <p>E.g. the power supply pin of a power window has "shortTerm" PinApplianceType, in contrast to the head light which is a "long term".</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PinComponentType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the type of a<i>PinComponent</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PinCurrentType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the different available current types of a pin.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PinTimingType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the different available timing types of a pin.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PinType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the type of a pin.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PinVoltageType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the different available voltage types of a pin.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PlacementType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the type for which a<i>PlaceableElement</i>can be used.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="OnWay">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>
                     <i>OnWay</i>refers to an<i>OnWayPlacement</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="OnPoint">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>
                     <i>OnPoint</i>refers to an<i>OnPointPlacement</i>.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="PluggableTerminalType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid values for the type of PluggableTerminals. The type defines constraints about the numbers of wire and terminal receptions and their relations.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PowerConsumptionType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>PowerConsumptionTypes.</i>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PrimaryLockingType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the valid primary locking types for terminals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="PrimaryPartType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The primary type of the part defines the type of the part (e.g. ConnectorHousing, Fixing, etc.) Since the VEC supports dual use parts (e.g. Fixing &amp; WireProtection) the primary part type is necessary to define which specification associated to part is the primary character of the part. Therefore, all primary part types correspond to a PartOrUsageRelatedSpecification (e.g. ConnectorHousing --&gt; ConnectorHousingSpecification).</p>
            <p>The primary part type 'Other' is used if the PartVersion is not further specified by the VEC, which means it has no PartOrUsageRelatedSpecification, only a GeneralTechnicalPartSpecification or a direct instance of PartOrUsageRelatedSpecification.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Antenna"/>
         <xs:enumeration value="Battery"/>
         <xs:enumeration value="BoltMountedFixing"/>
         <xs:enumeration value="BoltTerminal"/>
         <xs:enumeration value="CableDuct"/>
         <xs:enumeration value="CableTie"/>
         <xs:enumeration value="Capacitor"/>
         <xs:enumeration value="CavityAccessory"/>
         <xs:enumeration value="CavityPlug"/>
         <xs:enumeration value="CavitySeal"/>
         <xs:enumeration value="ConnectorHousing"/>
         <xs:enumeration value="ConnectorHousingCap"/>
         <xs:enumeration value="CorrugatedPipe"/>
         <xs:enumeration value="Diode"/>
         <xs:enumeration value="EdgeMountedFixing"/>
         <xs:enumeration value="EEComponent"/>
         <xs:enumeration value="Ferrite"/>
         <xs:enumeration value="Fitting"/>
         <xs:enumeration value="Fixing"/>
         <xs:enumeration value="Fuse"/>
         <xs:enumeration value="Grommet"/>
         <xs:enumeration value="HoleMountedFixing"/>
         <xs:enumeration value="MultiCavityPlug"/>
         <xs:enumeration value="MultiCavitySeal"/>
         <xs:enumeration value="MultiFuse"/>
         <xs:enumeration value="Other"/>
         <xs:enumeration value="OpenWireEnd"/>
         <xs:enumeration value="PartStructure"/>
         <xs:enumeration value="PluggableTerminal"/>
         <xs:enumeration value="PotentialDistributor"/>
         <xs:enumeration value="Relay"/>
         <xs:enumeration value="RingTerminal"/>
         <xs:enumeration value="ShrinkableTube"/>
         <xs:enumeration value="SpliceTerminal"/>
         <xs:enumeration value="Stripe"/>
         <xs:enumeration value="Tape"/>
         <xs:enumeration value="Terminal"/>
         <xs:enumeration value="Tube"/>
         <xs:enumeration value="Wire"/>
         <xs:enumeration value="WireEndAccessory"/>
         <xs:enumeration value="WireProtection"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="RelaisApplianceType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies the appliance type of a relais.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="RelaisType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the type of a relais (switching behaviour).</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="RobustnessClass">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the literals that shall be used for specific robustness classes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="RobustnessClassReferenceSystem">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the literals that shall be used for specific robustness class reference systems.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SealState">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the sealing state of the splice.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SealingGeometry">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid values of the geometry of a cavity sealing. It defines the cross-section geometry.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SegmentCrossSectionAreaType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid values the type of the cross-section area of a<i>TopologySegment</i>, since a<i>TopologySegment</i>can have different cross section areas with different meanings in the process.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SegmentForm">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the SegmentForm.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SiPrefix">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of SI unit prefixes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Yotta"/>
         <xs:enumeration value="Zetta"/>
         <xs:enumeration value="Exa"/>
         <xs:enumeration value="Peta"/>
         <xs:enumeration value="Tera"/>
         <xs:enumeration value="Giga"/>
         <xs:enumeration value="Mega"/>
         <xs:enumeration value="Kilo"/>
         <xs:enumeration value="Hecto"/>
         <xs:enumeration value="Deca"/>
         <xs:enumeration value="Deci"/>
         <xs:enumeration value="Centi"/>
         <xs:enumeration value="Milli"/>
         <xs:enumeration value="Micro"/>
         <xs:enumeration value="Nano"/>
         <xs:enumeration value="Pico"/>
         <xs:enumeration value="Femto"/>
         <xs:enumeration value="Atto"/>
         <xs:enumeration value="Zepto"/>
         <xs:enumeration value="Yocto"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="SiUnitName">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of SI unit names. In difference to the SI-System gram is used as literal for the measurement of mass, instead of kilogram. Since a unit is formed with prefix and unit name gram would have to be defined as milli kilogram otherwise.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Metre"/>
         <xs:enumeration value="Gram"/>
         <xs:enumeration value="Second"/>
         <xs:enumeration value="Ampere"/>
         <xs:enumeration value="Kelvin"/>
         <xs:enumeration value="Mole"/>
         <xs:enumeration value="Candela"/>
         <xs:enumeration value="Radian"/>
         <xs:enumeration value="Steradian"/>
         <xs:enumeration value="Hertz"/>
         <xs:enumeration value="Newton"/>
         <xs:enumeration value="Pascal"/>
         <xs:enumeration value="Joule"/>
         <xs:enumeration value="Watt"/>
         <xs:enumeration value="Coulomb"/>
         <xs:enumeration value="Volt"/>
         <xs:enumeration value="Farad"/>
         <xs:enumeration value="Ohm"/>
         <xs:enumeration value="Siemens"/>
         <xs:enumeration value="Weber"/>
         <xs:enumeration value="Tesla"/>
         <xs:enumeration value="Henry"/>
         <xs:enumeration value="DegreeCelsius"/>
         <xs:enumeration value="Lumen"/>
         <xs:enumeration value="Lux"/>
         <xs:enumeration value="Becquerel"/>
         <xs:enumeration value="Gray"/>
         <xs:enumeration value="Sievert"/>
         <xs:enumeration value="Katal"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="SignalCurve">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SignalDirection">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of SignalDirections.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="In"/>
         <xs:enumeration value="Out"/>
         <xs:enumeration value="InOut"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="SignalForm">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SignalInformationType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SignalSubType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SignalTransmissionMediumType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SignalType">
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SlotGender">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the gender of a slot.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SlotLayoutType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration that defines standard slot layouts. A slot layout represents the mechanical / geometrical properties / layout of the slot, not the electrical properties.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SlotSealingType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the possible sealing types for a slot, if the slot shall be sealed in its usage.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="SpliceType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of type of splice.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="StatusOfApproval">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the state of an approval.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TapingDirection">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the direction in relation to the start &amp; end-Location of the corresponding placement. If no TapingDirection is defined it is arbitrary.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="FromStart"/>
         <xs:enumeration value="FromEnd"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="TemperatureType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TerminalBoltNominalSize">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the nominal sizes for threaded bolts as "ISO metric screw thread" or as "Unified Thread Standard" (Imperial).</p>
            <p>See also<i>TerminalBoltType.MetricThread / ImperialThread.</i>
            </p>
            <p>
               <i> </i>
            </p>
            <p>For the definition of the values see<a href="https://en.wikipedia.org/wiki/ISO_metric_screw_thread">https://en.wikipedia.org/wiki/ISO_metric_screw_thread</a>and<a href="https://de.wikipedia.org/wiki/Unified_Thread_Standard">https://de.wikipedia.org/wiki/Unified_Thread_Standard</a>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TerminalBoltType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TerminalReceptionGender">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <i>OpenEnumeration</i>
            <i>TerminalReception</i>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TerminalSealingType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the possible sealing types for a terminal, if the terminal shall be sealed in its usage.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TopologyZoneType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>There can be various reasons to define TopologyZones. These can be differentiated with these type literals.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TransmissionMediumType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TubeShape">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid shapes of the cross section of a tube.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TubeSlitStyle">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid types / styles of a slitted tube.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="TypeOfPermission">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the type of a permission.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="USUnitName">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of US unit names.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Thou"/>
         <xs:enumeration value="Inch"/>
         <xs:enumeration value="Foot"/>
         <xs:enumeration value="Yard"/>
         <xs:enumeration value="Chain"/>
         <xs:enumeration value="Furlong"/>
         <xs:enumeration value="Mile"/>
         <xs:enumeration value="League"/>
         <xs:enumeration value="FluidOunce"/>
         <xs:enumeration value="Gill"/>
         <xs:enumeration value="Pint"/>
         <xs:enumeration value="Quart"/>
         <xs:enumeration value="Gallon"/>
         <xs:enumeration value="Grain"/>
         <xs:enumeration value="Drachm"/>
         <xs:enumeration value="Ounce"/>
         <xs:enumeration value="Pound"/>
         <xs:enumeration value="Stone"/>
         <xs:enumeration value="Quarter"/>
         <xs:enumeration value="HundredWeight"/>
         <xs:enumeration value="Ton"/>
         <xs:enumeration value="Perch"/>
         <xs:enumeration value="Rood"/>
         <xs:enumeration value="Acre"/>
         <xs:enumeration value="AWG">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>American wire gauge (AWG), also known as the Brown &amp; Sharpe wire gauge, is a standardized wire gauge system used in the United States and Canada.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="UsageConstraintType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of the type of a UsageConstraint. Valid values are allow and deny.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Allow"/>
         <xs:enumeration value="Deny"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="UsageNodeType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the different types of<i>UsageNodes.</i>
            </p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="ValueDetermination">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Enumeration for the definition of a value determination. (see KBLFRM-316)</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:enumeration value="Calculated">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The value is determined by a calculation algorithm.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Measured">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The value is determined by an exact measurement.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
         <xs:enumeration value="Estimated">
            <xs:annotation>
               <xs:documentation xml:lang="en">
                  <p>The value is estimated by a person.</p>
               </xs:documentation>
            </xs:annotation>
         </xs:enumeration>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="VariantCodeType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration for the available types of the variant codes.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="VariantConfigurationType">
      <xs:annotation>
         <xs:documentation xml:lang="en"/>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="VariantGroupType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines valid values for the type of VariantGroups.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="VecVersion">
      <xs:restriction base="xs:string">
         <xs:enumeration value="1.1.1"/>
         <xs:enumeration value="1.1.2"/>
         <xs:enumeration value="1.1.3"/>
         <xs:enumeration value="1.2.0"/>
         <xs:enumeration value="1.2.1"/>
         <xs:enumeration value="1.2.2"/>
         <xs:enumeration value="2.0.0"/>
         <xs:enumeration value="2.0.1"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="WindingFirmness">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the firmness with which a tape is applied to a segment.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="WindingType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p> Defines the type of taping.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="WireAddOnType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies possible values for the t<i>ype</i>of wire add-ons (e.g.<i>CavityAddOn</i>). </p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="WireElementShape">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Defines the shape of a wire element.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="WireGroupType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>OpenEnumeration for the types of wire groups.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="WireLengthType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>Specifies possible values for the<i>lengthType</i>of<i>WireLength</i>.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="WireReceptionType">
      <xs:annotation>
         <xs:documentation xml:lang="en">
            <p>The<i>WireReceptionType</i>defines in an<i>OpenEnumeration</i>how a wire is joined with a wire reception.</p>
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string"/>
   </xs:simpleType>
</xs:schema>
