<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:ASTMCore="ASTMCore" xmlns:ASTMSemantics="ASTMSemantics" xmlns:ASTMSource="ASTMSource" xmlns:DeclarationAndDefinition="DeclarationAndDefinition" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="ASTMSource">
  <xsd:import namespace="ASTMCore" schemaLocation="ASTMCore-EmofXMI.xsd"/>
  <xsd:import namespace="ASTMSemantics" schemaLocation="ASTMCore.ASTMSemanticsXMI.xsd"/>
  <xsd:import namespace="DeclarationAndDefinition" schemaLocation="ASTMCore.ASTMSyntax.DeclarationAndDefinitionXMI.xsd"/>
  <xsd:complexType name="CompilationUnit">
    <xsd:complexContent>
      <xsd:extension base="ASTMSource:SourceFile">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="fragments" type="DeclarationAndDefinition:DefintionObject"/>
          <xsd:element name="opensScope" type="ASTMSemantics:ProgramScope"/>
        </xsd:choice>
        <xsd:attribute name="language" type="xsd:string" use="required"/>
        <xsd:attribute name="fragments" type="xsd:string"/>
        <xsd:attribute name="opensScope" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="CompilationUnit" type="ASTMSource:CompilationUnit"/>
  <xsd:complexType abstract="true" name="GASTMSourceObject">
    <xsd:complexContent>
      <xsd:extension base="ASTMCore:GASTMObject"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="GASTMSourceObject" type="ASTMSource:GASTMSourceObject"/>
  <xsd:complexType name="SourceFile">
    <xsd:complexContent>
      <xsd:extension base="ASTMSource:GASTMSourceObject">
        <xsd:attribute name="path" type="xsd:string" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SourceFile" type="ASTMSource:SourceFile"/>
  <xsd:complexType name="SourceFileReference">
    <xsd:complexContent>
      <xsd:extension base="ASTMSource:SourceFile">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="locationInfo" type="ASTMSource:SourceLocation"/>
          <xsd:element name="ofSourceFile" type="ASTMSource:SourceFile"/>
        </xsd:choice>
        <xsd:attribute name="locationInfo" type="xsd:string"/>
        <xsd:attribute name="ofSourceFile" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SourceFileReference" type="ASTMSource:SourceFileReference"/>
  <xsd:complexType name="SourceLocation">
    <xsd:complexContent>
      <xsd:extension base="ASTMSource:GASTMSourceObject">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
          <xsd:element name="inSourceFile" type="ASTMSource:SourceFile"/>
        </xsd:choice>
        <xsd:attribute name="startLine" type="xsd:int" use="required"/>
        <xsd:attribute name="startPosition" type="xsd:int" use="required"/>
        <xsd:attribute name="endLine" type="xsd:int" use="required"/>
        <xsd:attribute name="endPosition" type="xsd:int" use="required"/>
        <xsd:attribute name="inSourceFile" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SourceLocation" type="ASTMSource:SourceLocation"/>
</xsd:schema>
