CookML definition

The following table lists the complete CookML data structure. It contains required/mandatory elements and optional elements. Required elements must be supported and handled for any application, while optional elements are not. If an application is not able to handle optional or unknown elements (e.g. because the implementation is older than the version of the dataset), these must be ignored without any warning or error message.

Some additional notes:

  • The used character set is UTF8
  • For some (new) elements, "rtf" as datatype is possible. If an application is supporting this, it’s required to export always also a plain-text version of the same information
  • "Datatype" can be "text" or "rtf". If "rtf" is used, the same Element must be repeated with "text" and the content must be converted into plain text
  • Preparation: Programs must handle the import of both "text" and "step" but can transform it for internal storage or export only in one of both
  • Picbin: "format": Programs must support "jpg". Other formats are allowed, but there is risk that other Programs are not able to handle that
  • "rid": is the unique identifier for a recipe, first defined from Ambrosia. See definition here
XML-Header Type Required Description Version
cookml Element X Root of the actual data 1.1.2
  «version» Tag X Revision number of the CML specification use to create the instance file 1.1.2
  «name» Tag X Name of the recipe collection contained in this file 1.1.2
  «prog» Tag X Name of the program which generated this instance 1.1.2
  «progver» Tag X Version number of “prog” 1.1.2
  recipe Element X Root of the individual recipe 1.1.2
    «lang» Tag   Language used in the recipe 1.1.2
    head Element X Informational data to a recipe 1.1.2
      «title» Tag X Title of the recipe 1.1.2
      «rid» Tag   Unique recipe identifier 1.1.2
      «servingqty» Tag X Serving quantity 1.1.2
      «servingtype» Tag X Unit of serving quantity (person, piece, etc.) 1.1.2
      «createdate» Tag   Creating date 1.1.2
      «createuser» Tag   Creator/Recorder of recipe 1.1.2
      «createemail» Tag   EMail of creator 1.1.2
      «changedate» Tag   Date of the most recent change 1.1.2
      «changeuser» Tag   Person, who made the most recent change 1.1.2
      «changeemail» Tag   EMail of “changeuser” 1.1.2
      «timeallqty» Tag   Total preparation time for the recipe 1.1.2
      «timeprepqty» Tag   Preparation time 1.1.2
      «timecookqty» Tag   Cooking time 1.1.2
      «costs» Tag   Cost of the recipe 1.1.2
      «country» Tag   Producing country 1.1.2
      «proteins» Tag   Quantity of proteins 1.1.2
      «carbohydrates» Tag   Quantity of carbohydrates 1.1.2
      «fat» Tag   Quantity of fat 1.1.2
      «wwpoints» Tag   Weight-Watcher points or something like that 1.1.2
      cat Element X Categories (recipe grouping) 1.1.2
      hint Element   Key words for the recipe 1.1.2
      sourceline Element   Free format information to the recipe source 1.1.2
      card Element   Detailed description of the recipe (e.g. for a restaurant menu) 1.1.2
      allergies Element   Allergic substances 1.1.2
        «allergy» Tag   Data for an allergic substance 1.1.2
        «name» Tag   Name of the allergic substance 1.1.2
        «contains» Tag   Is allergic substance in the recipe 1.1.2
      content Element   Information on substances contained in recipe ingredients 1.1.2
        «type» Tag   Type of substance 1.1.2
        «value» Tag   Value/quantity of substance 1.1.2
      picture Element   Image of the recipe 1.1.2
        «file» Tag   Path to the image, either local or on the web 1.1.2
        picbin Element   Image of the recipe, embedded in the XML file 1.1.2
          «format» Tag   Format of the embedded image 1.1.2
    custom Element   Field for additional data 1.1.2
      «name» Tag   Name of the “custom” field 1.1.2
      «datatype» Tag   Data type of the “custom” field 1.1.2
      «value» Tag   Value of the “custom” field 1.1.2
    part Element X Grouping of an ingredient unit 1.1.2
      «title» Tag X Title of the ingredient unit 1.1.2
      ingredient Element X Ingredient (root of each ingredient) 1.1.2
        «qty» Tag X Required quanity of ingredient 1.1.2
        «unit» Tag X Unit of the ingredient 1.1.2
        «item» Tag X Name of the ingredient 1.1.2
        inote Element   Additional information, explanations to the ingredient in plain text 1.1.2
        «bls» Tag   The ingredients BLS-Code (BLS – Bundeslebensmittelschlüssel) 1.1.2
        «gram» Tag   Approximite value in grams for units which are not directly convertible 1.1.2
        «shop» Tag   Flag, ob Zutat auf Einkaufslisten soll 1.1.2
        «calc» Tag   Flag, to define if ingredient should be considered in the nutrional calculation 1.1.2
        «ridlink» Tag   RID to a recipe which is used as an ingredient 1.1.2
        preparation Element   Preparation instructions for this particular ingredient 1.1.2
    preparation Element X Preparation/Recipe instructions 1.1.2
      text Element X Preparation instructions as a block of text 1.1.2
      step Element X Prepartion instructions as individual steps 1.1.2
    remark Element   Remarks of a user/cook 1.1.2
      «user» Tag   The name of the person making the remark 1.1.2
      line Tag   The remark 1.1.2
  menu Element   The root of a menu 1.1.2
    «title» Tag   Name of the menu 1.1.2
    mcustom Element   Field for additional data 1.1.2
      «name» Tag   Name of the “mcustom” field 1.1.2
      «datatype» Tag   Data type of the “mcustom” field 1.1.2
      «value» Tag   Value of the “mcustom” field 1.1.2
      mrecipe Element   Recipe of a menu 1.1.2
        «title» Tag   Title of the recipe menu item 1.1.2
        «rid» Tag   “rid” – recipe identifier of the recipe menu item 1.1.2
        «amount» Tag   Quantity for the recipe menu item (in the unit of the recipe) 1.1.2
        «persons» Tag   Quantity of the menu item (always in the unit “person”) 1.1.2
        desc Element   Additional information to the recipe menu item 1.1.2