<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.irs.gov/efile" xmlns="http://www.irs.gov/efile" xmlns:efile="http://www.irs.gov/efile"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

	<xsd:annotation>
		<xsd:documentation>
			<Description>IRS e-file Corporate Income Tax Schema - Return schema for 1120 return</Description>
			<TaxYear>2018</TaxYear>
			<MaturityLevel>Final Release</MaturityLevel>
			<ReleaseDate>October 17, 2018</ReleaseDate>
		</xsd:documentation>
	</xsd:annotation>

	<xsd:include schemaLocation="../Common/ReturnHeader1120x.xsd" />
	<xsd:include schemaLocation="ReturnHeader1120OtherTypes.xsd" />		
	<xsd:include schemaLocation="ReturnData1120.xsd" />	
	<xsd:include schemaLocation="ReturnData1120OtherType.xsd" />				
	
	<!-- Corporate Return - 1120 -->
	<xsd:element name="Return">
		<xsd:annotation>
			<xsd:documentation>1120 Return - wraps around Return Header and Return Data</xsd:documentation>
		</xsd:annotation>

		<xsd:complexType>
			<xsd:sequence>			
			
				<xsd:element name="ReturnHeader">
					<xsd:complexType>
						<xsd:complexContent>
							<xsd:extension base="ReturnHeaderType">
								<!-- Subsidiary Return Count -->
								<xsd:attribute name="subsidiaryReturnCount">
									<xsd:annotation>
										<xsd:documentation>The number of subsidiaries that are listed on the Form 851</xsd:documentation>
									</xsd:annotation>
									<xsd:simpleType>
										<xsd:restriction base="IntegerNNType">
											<xsd:totalDigits value="5" />
										</xsd:restriction>
									</xsd:simpleType>
								</xsd:attribute>
							</xsd:extension>
						</xsd:complexContent>
					</xsd:complexType>
				</xsd:element>
				
				<xsd:element ref="ReturnData" />
			        
				<!-- Eliminations Consolidated Return -->
				<xsd:element name="EliminationsConsolidatedReturn" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>Eliminations Consolidated Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>				
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderEliminationsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	
				
				<!-- Adjustments Consolidated Return -->
				<xsd:element name="AdjustmentsConsolidatedReturn" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>Adjustments Consolidated Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>				
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderAdjustmentsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	
								        	        
				<!-- Subconsolidation 1120 Return -->
				<xsd:element name="Subconsolidation1120Return" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>1120 Subconsolidation Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>	
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderSubconsolidationType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>		

				<!-- Parent Return -->
				<xsd:element name="ParentReturn" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>Parent Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>	
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderParentType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>

				<!-- Subsidiary 1120 Return -->
				<xsd:element name="SubsidiaryReturn" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>1120 Subsidiary Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>					
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderSubsidiaryType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>

				<!-- Eliminations 1120 Return -->
				<xsd:element name="Eliminations1120Return" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>1120 Eliminations Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>	
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderEliminationsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	

				<!-- Adjustments 1120 Return -->
				<xsd:element name="Adjustments1120Return" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>1120 Adjustments Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>	
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderAdjustmentsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	

				<!-- Subconsolidation 1120L Return -->
				<xsd:element name="Subconsolidation1120LReturn" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>1120L Subconsolidation Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>					
				
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderSubconsolidationType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>		

				<!-- Subsidiary 1120L Return -->
				<xsd:element name="Subsidiary1120LReturn" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>1120L Subsidiary Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>							
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderSubsidiaryType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>

				<!-- Eliminations 1120L Return -->
				<xsd:element name="Eliminations1120LReturn" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>1120L Eliminations Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>							
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderEliminationsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	

				<!-- Adjustments 1120L Return -->
				<xsd:element name="Adjustments1120LReturn" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>1120L Adjustments Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>							
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderAdjustmentsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	

				<!-- Subconsolidation 1120PC Return -->
				<xsd:element name="Subconsolidation1120PCReturn" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>1120PC Subconsolidation Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderSubconsolidationType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>		

				<!-- Subsidiary 1120PC Return -->
				<xsd:element name="Subsidiary1120PCReturn" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>1120PC Subsidiary Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>				
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderSubsidiaryType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>

				<!-- Eliminations 1120PC Return -->
				<xsd:element name="Eliminations1120PCReturn" minOccurs="0" maxOccurs="1"> 
					<xsd:annotation>
						<xsd:documentation>1120PC Eliminations Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>					
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderEliminationsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	
	
				<!-- Adjustments 1120PC Return -->
				<xsd:element name="Adjustments1120PCReturn" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>1120PC Adjustments Return - wraps around Return Header and Return Data</xsd:documentation>
					</xsd:annotation>					
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ReturnHeader" type="ReturnHeaderAdjustmentsType" />
							<xsd:element name="ReturnData" type="ReturnData1120OtherType" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>	
				
			</xsd:sequence>

			<!-- Return Version -->
			<xsd:attribute name="returnVersion" type="StringType" use="required" fixed="2018v5.0" >
				<xsd:annotation>
					<xsd:documentation>Return Version</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>

		</xsd:complexType>

		<!-- Uniqueness constraint for 'documentId' attribute of return documents (including any parent or subsidiary return documents) -->
		<xsd:unique name="documentId">
			<xsd:selector xpath="efile:ReturnData/efile:*|efile:ConsolidatedEliminationsReturn/efile:ReturnData/efile:*|efile:ConsolidatedAdjustmentsReturn/efile:ReturnData/efile:*|efile:Subconsolidation1120Return/efile:ReturnData/efile:*|efile:ParentReturn/efile:ReturnData/efile:*|efile:SubsidiaryReturn/efile:ReturnData/efile:*|efile:Eliminations1120Return/efile:ReturnData/efile:*|efile:Adjustments1120Return/efile:ReturnData/efile:*|efile:Subconsolidation1120LReturn/efile:ReturnData/efile:*|efile:Subsidiary1120LReturn/efile:ReturnData/efile:*|efile:Eliminations1120LReturn/efile:ReturnData/efile:*|efile:Adjustments1120LReturn/efile:ReturnData/efile:*|efile:Subconsolidation1120PCReturn/efile:ReturnData/efile:*|efile:Subsidiary1120PCReturn/efile:ReturnData/efile:*|efile:Eliminations1120PCReturn/efile:ReturnData/efile:*|efile:Adjustments1120PCReturn/efile:ReturnData/efile:*" />
			<xsd:field xpath="@documentId" />
		</xsd:unique>

		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment1">
			<xsd:selector xpath="efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment2">
			<xsd:selector xpath="efile:ConsolidatedEliminationsReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment3">
			<xsd:selector xpath="efile:ConsolidatedAdjustmentsReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment4">
			<xsd:selector xpath="efile:Subconsolidation1120Return/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>			
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment5">
			<xsd:selector xpath="efile:ParentReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>				
	
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment6">
			<xsd:selector xpath="efile:SubsidiaryReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment7">
			<xsd:selector xpath="efile:Eliminations1120Return/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment8">
			<xsd:selector xpath="efile:Adjustments1120Return/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		

		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment9">
			<xsd:selector xpath="efile:Subconsolidation1120LReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment10">
			<xsd:selector xpath="efile:Subsidiary1120LReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment11">
			<xsd:selector xpath="efile:Eliminations1120LReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment12">
			<xsd:selector xpath="efile:Adjustments1120LReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		

		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment13">
			<xsd:selector xpath="efile:Subconsolidation1120PCReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment14">
			<xsd:selector xpath="efile:Subsidiary1120PCReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>				
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment15">
			<xsd:selector xpath="efile:Eliminations1120PCReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
		<!-- Uniqueness constraint for Binary Attachment -->
		<xsd:unique name="BinaryAttachment16">
			<xsd:selector xpath="efile:Adjustments1120PCReturn/efile:ReturnData/efile:BinaryAttachment" />
			<xsd:field xpath="efile:AttachmentLocationTxt" />
		</xsd:unique>		
		
	</xsd:element>

</xsd:schema>

