a + after a tag -> may have 1 or more a * after a tag -> may have 0 or more a ? after a tag -> may have 0 or 1 entry for that element groupname string(10) string(arbitrary length) </> <year> number(4) </> ? <category> string(50); first one is the main category </> + <author> <fn> (incl. middle i.) string </>? <ln> string </> </> + <publisher>string </> <keyword> string (arbitrary length) </>* <price> 999.99 </> <discountPrice> 999.99 (discounted price, = ACTUAL SELLING PRICE AFTER DISCOUNT) </> <quantity> integer </> (amount available, sum over all warehouse) <description> optional.... </> ? </book> <book> ............more books........... </book> <music> <id> string(10) </> <albumName> string </> <genre> like category </> <artist> string </artist> <recordingCompany> recording company </> <price> same as book </> <discount> same as book </> <quantity> same as book </> <description> same as book </> </music> <music> ........ more music........... </> </products> <shipping> shipping vendors that ships stuff for your company <vendor> <name> name of this vendor (UPS, FEDEX etc.) </> <url> string </> ? <toll-free> string </> <method id = "a number to represent this shipping method"> <option> standard, next day, overnight, air, missile, teleport.... etc. anything </option> <price> <flat> 99.99 </> ? <perUnit> 99.99 </> ? <perPound> 99.99 </> ? </price> <restrictions> <maximumWeight> max weight allowed. </> ? <maximumItems> max item allowed. </> ? <cities> cities of destination that can be selected </> * </restrictions> </method> + </vendor>+ </shipping> </companyInfo>