<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Geoff Mack (FurnishNet) -->
<!-- © 2001 FurnishNet.com.  All rights reserved.  Contains confidential and proprietary information. -->
<!-- 
Ver.   Date            By                     Action 
1.8    16-Mar-05  MOverholt		The following changes were requested and approved at the 2005-03-16 FIDX meeting in Greensboro, NC.
								Added optional shipTime attribute to shipDate element.
								Added optional containerOwner element under container.
1.7a  26-Sep-03  Geoff Mack        Referenced fn_base_v1.5 and fn_item_v1.5 to realize changes made in those schemas.
1.7    30-Jul-03    Geoff Mack        Changed name of key "markForID" to "markForIDASN" to skirt duplicate key issue in envelope.
1.6    05-Oct-01   Geoff Mack         Converted to the May 5, 2001 W3C Recommendation using XML Spy v4.0.  Now references
                                                         http://www.w3.org/2001/XMLSchema instead of http://www.w3.org/2000/10/XMLSchema.
1.5    27-Jul-01    Geoff Mack        Made modifications based on input received at the 7/24/2001 FurnXML meeting in Charlotte, NC:
                                                      * Added element containerDimensions of type fn_item:dimensionsType to container.
                                                      * Referenced fn_base_v1.3 and fn_item_v1.3.
1.4    26-Jun-01   Geoff Mack       Changed web server address from www.furnishnet.com/... to support.furnishnet.com/...
                                                      Made modifications based on input received at the 5/15/2001 FurnXML meeting in Charlotte, NC:
                                                      * Added "ThirdParty" to freightTerms as an additional enumerated value.
                                                      * Changed the element name "packSerialNumber" to "packNumber" to eliminate confusion between
                                                        this element and serial numbers.  Also removed the existing length restriction.
                                                      * Changed the name of type shipmentInformationType to shipmentQuantityType.
                                                      * Removed shipToLocation from shipmentQuantityType.  Retained markFor in this structure, 
                                                        renaming it to markForLocation.  With the renaming, renamed the header's "markForParty" element 
                                                        back to markFor.
                                                        Removed or changed xlinks referencing shipToLocation since it no longer exists; removed "id"
                                                        attribute from the shipTo element on the header since nothing is referencing it any more, and made
                                                        that element bounded (single occurrence) since there is no longer any way to distinguish one
                                                        ship-to party from another.
                                                      * Removed element "packInformation" from pack and replaced it with packUnits (containing only the 
                                                        number of items in the pack).
                                                      * Added itemQuantity (shipmentQuantityType) at the item level.
                                                      * Changed structure to allow the following:
                                                          shipment / order / pack (optional) / item (optional)
                                                          shipment / order / item (optional) / pack (optional)
                                                      * Removed quantityShippedToDate from shipmentQuantityType (due to lack of interest).
                                                      Also made the following changes:
                                                      * Consolidated orderNumber, orderDate, invoiceNumber, and sellersSalesOrderNumber into
                                                        a single element, orderReference, of type referenceNumberType.  Added the referenceDocumentDate
                                                        attribute to referenceNumberType (to accommodate PO date, invoice date, etc.)  Moved this
                                                        structure to fn_base and reference that from ASN's orderReference.
                                                      * Added itemSystemReference to itemType.
                                                      * Consolidated advancedShipNoticeID and billOfLadingNumber into the new shipmentReferenceNumber;
                                                        also added "carrierReferenceNumber" to referenceNumberType (in fn_base).
                                                      * Added documentStructure to facilitate programmatic decomposition of the document by the receiving
                                                        party.
                                                      * Added productCategory element to shipmentType.
                                                      * Referenced transactionDate from fnBase, which makes it a timeInstant (dateTime) type.
                                                      * Changed type of "description" attribute on shipTo and MarkFor from string to fnBase:locationType.
                                                      * Changed all NMTOKEN data type declarations to string.
                                                      * Added version numbers to this and all referenced schemas.  This was done to enable the simultaneous
                                                        use of two different versions of the schema by two different parties since both parties would be
                                                        validating against the schema definition in a single location (FurnishNet.com).
1.3    07-May-01   Geoff Mack      * Two elements existed called "item," each with a different structure (shipment/order/pack/item/item).  
                                                        This is legal in a schema but posed problems when converting to a DTD.  The first of the two has been 
                                                        renamed to itemInformation.
                                                      * Two elements existed called "units," each with a different structure (shipmentInformationType/units 
                                                        and and itemReferenceType/units).  The former exists at different levels (shipment, order, and pack) 
                                                        and its meaning is contextual to to the level at which it occurs, so itemReferenceType/units has been 
                                                        renamed to referenceUnits.
                                                      * Two elements existed called "markFor," each with a different structure.  The one on on the header 
                                                        was renamed markForParty to eliminate DTD conversion issues.                
1.2    29-Mar-01   Geoff Mack       * Removed itemQuantity from itemType (it was duplicated by packInformation/Units); placed 
                                                         itemReference element directly on itemType.
                                                      * Added shipFrom element to shipmentType.
                                                      * Added shipmentMethodType and shipmentMethod element on shipmentType.
                                                      * Added subItem element to itemType to represent so-called "phantom" items and their components.
                                                      * A "phantom" item is an item that is ordered by the retailer but is recognized by the manufacturer 
                                                        as multiple components.  Internally, the manufacturer tracks the components but reports the item 
                                                        as ordered (the "phantom") and the components on the ASN.
1.1    23-Mar-01   Geoff Mack       Significant structural revision to include four levels: shipment, order, pack, and item.
1.0    28-Feb-01   Geoff Mack       Created.
-->
<schema targetNamespace="http://support.furnishnet.com/xml/schemas/fnASN_v1.8" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:fnBase="http://support.furnishnet.com/xml/schemas/fnBase_v1.5" xmlns:fnItem="http://support.furnishnet.com/xml/schemas/fnItem_v1.5" xmlns:fnParty="http://support.furnishnet.com/xml/schemas/fnParty_v1.4" xmlns:fnASN="http://support.furnishnet.com/xml/schemas/fnASN_v1.8" version="1.8">
	<import namespace="http://support.furnishnet.com/xml/schemas/fnBase_v1.5" schemaLocation="http://support.furnishnet.com/xml/schemas/fn_base_v1.5.xsd"/>
	<import namespace="http://support.furnishnet.com/xml/schemas/fnItem_v1.5" schemaLocation="http://support.furnishnet.com/xml/schemas/fn_item_v1.5.xsd"/>
	<import namespace="http://support.furnishnet.com/xml/schemas/fnParty_v1.4" schemaLocation="http://support.furnishnet.com/xml/schemas/fn_party_v1.4.xsd"/>
	<complexType name="advanceShipNoticeType">
		<sequence>
			<element name="shipment" type="fnASN:shipmentType"/>
		</sequence>
	</complexType>
	<element name="advanceShipNotice" type="fnASN:advanceShipNoticeType">
		<key name="markForIDKeyASN">
			<selector xpath="markFor"/>
			<field xpath="@id"/>
		</key>
		<keyref name="markForIDShipmentRef" refer="fnASN:markForIDKeyASN">
			<selector xpath="shipment/shipmentQuantity/units/markForLocation"/>
			<field xpath="@markForID"/>
		</keyref>
		<keyref name="markForIDOrderRef" refer="fnASN:markForIDKeyASN">
			<selector xpath="shipment/order/orderQuantity/units/markForLocation"/>
			<field xpath="@markForID"/>
		</keyref>
		<keyref name="markForIDOrderItemRef" refer="fnASN:markForIDKeyASN">
			<selector xpath="shipment/order/item/itemQuantity/units/markForLocation"/>
			<field xpath="@markForID"/>
		</keyref>
		<keyref name="markForIDOrderPackItemRef" refer="fnASN:markForIDKeyASN">
			<selector xpath="shipment/order/pack/item/itemQuantity/units/markForLocation"/>
			<field xpath="@markForID"/>
		</keyref>
	</element>
	<complexType name="itemQuantityType">
		<sequence minOccurs="0">
			<element name="unitsShipped">
				<annotation>
					<documentation>Total number of packs on the shipment or order, or the  number of items on the order or in a pack (context sensitive).</documentation>
				</annotation>
				<complexType>
					<complexContent>
						<extension base="fnBase:quantityType">
							<sequence minOccurs="0">
								<element name="markForLocation" type="fnBase:markForLocationType" minOccurs="0" maxOccurs="unbounded">
									<annotation>
										<documentation>The sum of all quantities specified here should equal the "quantity" attribute of the  enclosing unitsShipped element.  The markForID refers to an entry in the markFor element on the header.</documentation>
									</annotation>
								</element>
								<element name="pieceIdentification" type="fnBase:pieceIdentificationNumberType" minOccurs="0"/>
							</sequence>
						</extension>
					</complexContent>
				</complexType>
			</element>
			<element name="dimensions" type="fnItem:dimensionsType" minOccurs="0" maxOccurs="2">
				<annotation>
					<documentation>Aggregate measurements for all associated units.  Having two sets of dimensions allows defining English and Metric measurements.</documentation>
				</annotation>
			</element>
			<element name="quantityOrdered" type="fnBase:quantityType" minOccurs="0">
				<annotation>
					<documentation>Total number of packs or items ordered on the shipment or order (context sensitive).</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="itemType">
		<sequence>
			<element name="itemInformation">
				<annotation>
					<documentation>Descriptive, physical, and handling information about this item.</documentation>
				</annotation>
				<complexType>
					<complexContent>
						<extension base="fnItem:itemIdentifierType">
							<sequence minOccurs="0">
								<element name="subItem" type="fnItem:itemIdentifierType" minOccurs="0" maxOccurs="unbounded">
									<annotation>
										<documentation>Subitems are used when the retailer has ordered an item that is really known to the manufacturer as multiple items (e.g., the retailer orders a bed that the manufacturer knows as a headboard, footboard, and rail).</documentation>
									</annotation>
								</element>
							</sequence>
						</extension>
					</complexContent>
				</complexType>
			</element>
			<element name="itemReferenceNumber" type="fnBase:referenceNumberType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Any of a number of references revelent to this item, such as purchase order line number, serial number, etc.  An optional associated document date is also accommodated.</documentation>
				</annotation>
			</element>
			<element name="itemQuantity" type="fnASN:itemQuantityType" minOccurs="0">
				<annotation>
					<documentation>Destination, distribution, and summary physical information about the items in this order or pack (context sensitive).</documentation>
				</annotation>
			</element>
			<element name="itemSystemReference" type="fnBase:systemReferenceType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>A system reference facilitates automated processing of the document by including data elements that are not necessarily part of a standard transaction but are required or desired by the computer systems of the trading partners.  Effective use of system references requires pre-arrangement between trading partners.  NOTE: this structure should not be used for data that is otherwise accommodated within a transaction schema.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="orderType">
		<sequence>
			<element name="orderReferenceNumber" type="fnBase:referenceNumberType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Any of a number of references revelent to this order, such as buyer's purchase order number, invoice number, sales order number, etc.  An optional associated document date is also accommodated.</documentation>
				</annotation>
			</element>
			<element name="orderQuantity" type="fnASN:shipmentQuantityType" minOccurs="0">
				<annotation>
					<documentation>Destination, distribution, and summary physical information about the "packs" in this order.</documentation>
				</annotation>
			</element>
			<element name="partialShipment" type="boolean" minOccurs="0">
				<annotation>
					<documentation>True if this shipment represents a partial shipment (i.e., non-completion) of the order, otherwise false.</documentation>
				</annotation>
			</element>
			<element name="orderSystemReference" type="fnBase:systemReferenceType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>A system reference facilitates automated processing of the document by including data elements that are not necessarily part of a standard transaction but are required or desired by the computer systems of the trading partners.  Effective use of system references requires pre-arrangement between trading partners.  NOTE: this structure should not be used for data that is otherwise accommodated within a transaction schema.</documentation>
				</annotation>
			</element>
			<choice minOccurs="0">
				<element name="item" minOccurs="0" maxOccurs="unbounded">
					<annotation>
						<documentation>Information about the items on this order.</documentation>
					</annotation>
					<complexType>
						<complexContent>
							<extension base="fnASN:itemType">
								<sequence minOccurs="0">
									<element name="pack" type="fnASN:packType" minOccurs="0" maxOccurs="unbounded"/>
								</sequence>
							</extension>
						</complexContent>
					</complexType>
				</element>
				<element name="pack" minOccurs="0" maxOccurs="unbounded">
					<annotation>
						<documentation>May be a carton, a shrink-wrapped bundle, or any other container of product.</documentation>
					</annotation>
					<complexType>
						<complexContent>
							<extension base="fnASN:packType">
								<sequence minOccurs="0">
									<element name="item" type="fnASN:itemType" minOccurs="0" maxOccurs="unbounded">
										<annotation>
											<documentation>Information on the item(s) in this pack.  Although a pack will generally contain only one kind of item, this structure allows different items in a pack.</documentation>
										</annotation>
									</element>
								</sequence>
							</extension>
						</complexContent>
					</complexType>
				</element>
			</choice>
		</sequence>
	</complexType>
	<complexType name="packType">
		<annotation>
			<documentation>May be a carton, a shrink-wrapped bundle, or any other container of product.</documentation>
		</annotation>
		<sequence minOccurs="0">
			<element name="packNumber" minOccurs="0">
				<annotation>
					<documentation>Uniquely identifies the pack.</documentation>
				</annotation>
				<simpleType>
					<restriction base="string"/>
				</simpleType>
			</element>
			<element name="packUnits" type="fnBase:quantityType" minOccurs="0">
				<annotation>
					<documentation>The number of items in the pack.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="shipmentQuantityType">
		<sequence minOccurs="0">
			<element name="unitsShipped">
				<annotation>
					<documentation>Total number of packs on the shipment or order, or the  number of items on the order or in a pack (context sensitive).</documentation>
				</annotation>
				<complexType>
					<complexContent>
						<extension base="fnBase:quantityType">
							<sequence minOccurs="0">
								<element name="markForLocation" type="fnBase:markForLocationType" minOccurs="0" maxOccurs="unbounded">
									<annotation>
										<documentation>The sum of all quantities specified here should equal the "quantity" attribute of the  enclosing unitsShipped element.  The markForID refers to an entry in the markFor element on the header.</documentation>
									</annotation>
								</element>
							</sequence>
						</extension>
					</complexContent>
				</complexType>
			</element>
			<element name="dimensions" type="fnItem:dimensionsType" minOccurs="0" maxOccurs="2">
				<annotation>
					<documentation>Aggregate measurements for all associated units.  Having two sets of dimensions allows defining English and Metric measurements.</documentation>
				</annotation>
			</element>
			<element name="quantityOrdered" type="fnBase:quantityType" minOccurs="0">
				<annotation>
					<documentation>Total number of packs or items ordered on the shipment or order (context sensitive).</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<simpleType name="shipmentMethodType">
		<restriction base="string">
			<enumeration value="Air"/>
			<enumeration value="Motor"/>
			<enumeration value="Ocean"/>
			<enumeration value="Rail"/>
		</restriction>
	</simpleType>
	<complexType name="shipmentType">
		<sequence>
			<element name="document" type="fnBase:documentType" minOccurs="0">
				<annotation>
					<documentation>id represents a unique invoice number; type represents the transaction type (e.g., "856").  For programmatic management of language, use language codes specified by ISO 639-1988.  This normally mandatory element is optional because not all manufacturers and shippers will generate an  ASN number, instead possibly favoring some other identifier, such as bill of lading number.</documentation>
				</annotation>
			</element>
			<element name="actionRequestIndicator" type="fnBase:actionRequestIndicatorType" minOccurs="0">
				<annotation>
					<documentation>Specifies that the transaction is either new, a change to, or cancellation of a previous ship notice.</documentation>
				</annotation>
			</element>
			<element name="documentStructure" minOccurs="0">
				<annotation>
					<documentation>Specifies the structure of this ASN document for the benefit of the receiving party's programmatic processing of the document.</documentation>
				</annotation>
				<complexType>
					<attribute name="documentStructureQualifier" use="optional">
						<simpleType>
							<restriction base="string">
								<enumeration value="Shipment"/>
								<enumeration value="ShipmentOrder"/>
								<enumeration value="ShipmentOrderItem"/>
								<enumeration value="ShipmentOrderItemPack"/>
								<enumeration value="ShipmentOrderPack"/>
								<enumeration value="ShipmentOrderPackItem"/>
							</restriction>
						</simpleType>
					</attribute>
				</complexType>
			</element>
			<element name="shipmentReferenceNumber" type="fnBase:referenceNumberType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Any of a number of references revelent to this shipment, such as bill of lading number, carrier reference number, etc.  An optional associated document date is also accommodated.  Note: the ASN number and date are stored in the "document" element.</documentation>
				</annotation>
			</element>
			<element name="shipDate">
				<annotation>
					<documentation>The date that physical movement did or will take place.</documentation>
				</annotation>
				<complexType>
					<complexContent>
						<extension base="fnBase:shipDateType">
							<attribute name="shipTime" type="time" use="optional"/>
						</extension>
					</complexContent>
				</complexType>
			</element>
			<element name="buyer" type="fnParty:partyIdentificationType" minOccurs="0">
				<annotation>
					<documentation>The buyer of the goods being shipped.</documentation>
				</annotation>
			</element>
			<element name="seller" type="fnParty:sellerIdentificationType" minOccurs="0">
				<annotation>
					<documentation>The seller of the goods being shipped.</documentation>
				</annotation>
			</element>
			<element name="carrier" type="fnParty:carrierIdentificationType" minOccurs="0">
				<annotation>
					<documentation>Identifies the carrier of the goods being shipped.</documentation>
				</annotation>
			</element>
			<element name="shipFrom" type="fnParty:partyIdentificationType" minOccurs="0">
				<annotation>
					<documentation>The party/location from which goods will ship or have shipped.</documentation>
				</annotation>
			</element>
			<element name="shipTo" type="fnParty:shipToPartyType">
				<annotation>
					<documentation>The party/location to which goods will be shipped.</documentation>
				</annotation>
			</element>
			<element name="markFor" type="fnParty:shipToPartyType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Mark-For parties are parties, generally entities within the buying organization, to whom goods are routed after physical receipt of goods by the ship-to party.</documentation>
				</annotation>
			</element>
			<element name="productCategory" type="fnBase:noteType" minOccurs="0">
				<annotation>
					<documentation>Indicates the predominant product content in the shipment.</documentation>
				</annotation>
			</element>
			<element name="shipmentQuantity" type="fnASN:shipmentQuantityType" minOccurs="0">
				<annotation>
					<documentation>Destination, distribution, and summary physical information about the packs or items in this shipment.</documentation>
				</annotation>
			</element>
			<element name="shipmentMethod" type="fnASN:shipmentMethodType" minOccurs="0">
				<annotation>
					<documentation>Air, Motor, Ocean, Rail.</documentation>
				</annotation>
			</element>
			<element name="container" minOccurs="0">
				<annotation>
					<documentation>Container may be a rail car, a trailer, a ship container, or any other enclosed, sealable shipment medium.</documentation>
				</annotation>
				<complexType>
					<sequence>
						<element name="containerNumber">
							<annotation>
								<documentation>The number identifying this rail car, trailer, etc.</documentation>
							</annotation>
						</element>
						<element name="sealNumber" minOccurs="0">
							<annotation>
								<documentation>The seal number for this coontainer.</documentation>
							</annotation>
						</element>
						<element name="containerDimensions" type="fnItem:dimensionsType" minOccurs="0"/>
						<element name="containerOwner" type="fnParty:partyIdentificationType" minOccurs="0"/>
					</sequence>
				</complexType>
			</element>
			<element name="freightTerms" minOccurs="0">
				<annotation>
					<documentation>Collect, PrePaid, ThirdParty.</documentation>
				</annotation>
				<simpleType>
					<restriction base="string">
						<enumeration value="Collect"/>
						<enumeration value="PrePaid"/>
						<enumeration value="ThirdParty"/>
					</restriction>
				</simpleType>
			</element>
			<element name="shipmentSystemReference" type="fnBase:systemReferenceType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>A system reference facilitates automated processing of the document by including data elements that are not necessarily part of a standard transaction but are required or desired by the computer systems of the trading partners.  Effective use of system references requires pre-arrangement between trading partners.  NOTE: this structure should not be used for data that is otherwise accommodated within a transaction schema.</documentation>
				</annotation>
			</element>
			<element name="specialInstructions" type="fnBase:noteType" minOccurs="0" maxOccurs="unbounded"/>
			<element name="order" type="fnASN:orderType" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
</schema>
