<!-- See documentation at http://store.yahoo.com/storexport.html
     For support, contact store-support@yahoo-inc.com.

     If you aren't familiar with XML, you'll probably want this book:
     http://shopping.yahoo.com/shop?d=b&id=3386489&cf=1&isbn=076453310X
-->

<!ELEMENT       StoreExport (Settings,
                             Products
                             )>


<!ELEMENT	Settings (Published,
                          Locale,
                          StoreName?,
                          Currency?,
                          ShipMethods?,
                          PayMethods?
                          )>

<!-- The timestamp reflects when the Items have last changed. -->
<!ELEMENT       Published     EMPTY>
<!ATTLIST       Published
                timestamp     CDATA #REQUIRED>


<!-- Although the native encoding of this stores's content is given by
     the encoding field above, all the text in this XML export format
     has been converted to UTF-8 -->
<!ELEMENT       Locale        EMPTY >
<!ATTLIST       Locale
                code          CDATA #REQUIRED
                name          CDATA #REQUIRED
                encoding      CDATA #REQUIRED
                >


<!ELEMENT       StoreName    (#PCDATA)>


<!-- All prices are in the above-specified currency -->
<!ELEMENT       Currency     (#PCDATA)>

<!ELEMENT       PayMethods    (PayMethod*)>
<!ELEMENT       PayMethod     (#PCDATA)>

<!ELEMENT       ShipMethods   (ShipMethod*)>
<!ELEMENT       ShipMethod    (#PCDATA)>


<!-- Products are guaranteed to be in alphabetical order by ID. 

     Both orderable "items for sale" and other pages in the site are
     listed here.

     Most product search engines will want to ignore any Item which
     doesn't have orderable=YES.

     If an orderable item has no caption, you may want to look at its
     parent item (the last one listed in the Path element) for a
     caption. It's a common practice to put items without any
     particular text of its own directly on a section page so that the
     description of the product(s) is really contained in the section
     page. 

     For an example of what the fields mean, consider this (example) product:

     http://store.yahoo.com/acme/fan.html

     <Product Id="fan">
       <Code>FN-860</Code>
       <Description>All-Metal Fan</Description>
       <Url>http://store.yahoo.com/acme/fan.html</Url>
       <Thumb>&lt;IMG SRC="http://store1.yimg.com/I/acme_1578_82783" WIDTH=70 HEIGHT=55 BORDER=0 HSPACE=0 VSPACE=0&gt;</Thumb>
       <Orderable>YES</Orderable>
       <Taxable>YES</Taxable>
       <Pricing>
         <BasePrice>98.95</BasePrice>
         <GiftwrapCharge>1.2</GiftwrapCharge>
       </Pricing>
       <Path>
         <ProductRef Id="office" Url="http://store.yahoo.com/acme/office.html">Office</ProductRef>
       </Path>
       <Availability>Usually ships the same business day.</Availability>
       <Caption>The central air-conditioning systems found in so many offices today are, in our opinion, a mixed blessing. As well as circulating the air, they chill it,  denying employees the natural, healthful effects of  perspiration, and encouraging managers to work long hours during the summer, when they should, in the natural course of  things, be on holiday in the mountains or by the sea.  Your grandfather knew that the best way to cool an office was with good, old-fashioned fans. We think our fan is one he would have approved of. Unlike the cheap plastic fans found in most stores today, our classic fan boasts an all-metal construction. The viciously sharp metal fan blade can be used to trim cigars, shred sensitive documents, and in the hands of an expert, even sharpen pencils.</Caption>
       <OptionLists>
         <OptionList name="size">
           <OptionValue>Living-Room-Size</OptionValue>
	   <OptionValue>Bedroom-Size</OptionValue>
         </OptionList>
	 <OptionList name="color">
           <OptionValue>Green</OptionValue>
	   <OptionValue>Orange</OptionValue>
         </OptionList>
       </OptionLists>
     </Product>
  
     Description is really the title for a product, Caption is the
     full text describing it.

     The ID will often appear as the last component of the URL, but
     this is not always true (certainly when many items appear on a
     page,) so don't count on it.

     Code can include any characters except NUL.

     Thumb is an HTML tag for an image, of maximum size 70x70.

     See below for comments on pricing.

     When using this is a product search engine, you'll normally want
     to give high weight to the words in the Description element, and
     normal weight to words in the caption.

     Caption may include any characters, and often includes simple
     HTML structure. 

     Sorry, the export software don't currently guarantee that the
     HTML structure is valid. You might want to check for the usual
     problems (dangling quotes, tables not closed, ...) before
     inserting it on a page with other information. The same goes for
     the Description element.

     All the other elements are automatically generated and can be
     depended on to have fairly consistent structure (but this is not
     a guarantee.)

-->


<!ELEMENT       Products     (Product*
                              )>


<!ELEMENT       Product      (Code?,
                              Description?,
                              Url,
                              Thumb?,
                              Picture?,
			      Weight?,
			      Orderable,
                              Taxable,
                              Pricing?,
                              Path?,
                              Availability?,
                              Caption?,
			      OptionLists?
                              )>
<!ATTLIST       Product
		Id            CDATA        #REQUIRED>


<!ELEMENT	Code             (#PCDATA)>
<!ELEMENT	Description      (#PCDATA)>
<!ELEMENT	Url              (#PCDATA)>
<!ELEMENT	Thumb            (#PCDATA)>
<!ELEMENT	Picture          (#PCDATA)>
<!ELEMENT	Weight           (#PCDATA)>
<!ELEMENT	Orderable        (#PCDATA)>
<!ELEMENT	Taxable          (#PCDATA)>
<!ELEMENT       Caption          (#PCDATA)>
<!ELEMENT	OptionLists  (OptionList*)>
<!ELEMENT	OptionList	 (OptionValue*)>
<!ATTLIST	OptionList
		name CDATA #REQUIRED
>

<!ELEMENT	OptionValue (#PCDATA)>
    
<!-- All the prices are represented as normal floating point numbers
     like 1234.56 and *not* locale-specific formats such as $1,234.56
     or 1.234,56.

     LocalizedBasePrice is the printed representation. US merchants
     typically use the format 1234.56. English-language non-US
     merchants usually have a currency indication, such as
     AUD$1,234.56. European merchants often have Euros like 1.234,00
     DM (745,29 Euro).

     Most product search engines will just display the
     LocalizedBasePrice. B2B applications may be interested in the
     complete pricing info.

     For Quantity Pricing, the price is calculated by finding the
     QuantityPrice element with the largest MinimumQuantity not
     exceeding the purchased quantity, and adding that price plus
     times the requested quantity over the MinimumQuantity.  For
     example, something that is $2 or 5 for $9 would be:
     
     <BasePrice>2.00</BasePrice>
     <QuantityPrice MinimumQuantity=5>9.00</QuantityPrice>

     Buying 6 would cost $10.80.
     
     This is not the only reasonable model of quantity pricing; we may
     add support for other models which will use a new element type
     than QuantityPrice. We'll always keep BasePrice since this simple
     and all that most people care about.

     If there are QuantityConstraints, these limit the range of
     quantities that can be ordered. The most common case is something
     like paper which is ordered in units of 500 sheets, so
     quantum=500 and min=500. Max will usually be 10000000 (ten
     million,) for no particular reason.

     We normally leave out the QuantityConstraints element unless it
     is non-default.

-->
<!ELEMENT       Pricing          (BasePrice,
                                  LocalizedBasePrice,
                                  QuantityConstraints?,
                                  QuantityPrice*,
                                  GiftwrapCharge?,
                                  PersonalizationCharge?,
				  OrigPrice?,
				  LocalizedOrigPrice?,
				  SalePrice?,
				  LocalizedSalePrice?
                                  )>

<!ELEMENT       QuantityConstraints EMPTY>
<!ATTLIST       QuantityConstraints
                Min               CDATA #REQUIRED
                Max               CDATA #REQUIRED
                Quantum           CDATA #REQUIRED>

<!ELEMENT       BasePrice        (#PCDATA)>
<!ELEMENT       LocalizedBasePrice        (#PCDATA)>

<!ELEMENT       OrigPrice        (#PCDATA)>
<!ELEMENT       LocalizedOrigPrice        (#PCDATA)>

<!ELEMENT       SalePrice        (#PCDATA)>
<!ELEMENT       LocalizedSalePrice        (#PCDATA)>

<!ELEMENT       QuantityPrice    (#PCDATA)>
<!ATTLIST       QuantityPrice
                MinimumQuantity   CDATA #REQUIRED>

<!ELEMENT       GiftwrapCharge   (#PCDATA)>

<!ELEMENT       PersonalizationCharge (#PCDATA)>

<!ELEMENT       Path (ProductRef+
                     )>


<!-- You could stick the PCDATA part of the ItemRefs linked to the URL
     together with &gt; characters to get something very like the navigation
     links in the Yahoo! Directory.
 -->
<!ELEMENT       ProductRef      (#PCDATA)>
<!ATTLIST       ProductRef
                Id               CDATA #REQUIRED
                Url              CDATA #REQUIRED
                >

<!ELEMENT       Availability (#PCDATA)>
