CookML ist die Beschreibung eines
Rezeptaustausch-Formats, das programm-übergreifend den Austausch von Rezepten
aller Art erlaubt.
CookML entstand aus dem Wunsch für das Rezeptprogramm Kalorio
ein Austauschformat zu erstellen, daß alle angebotenen Rezeptdaten
transferieren kann. Das bisher verwendete Textformat MealMaster ist zwar sehr
verbreitet und lesbarer, aber es kann nur die absoluten Grunddaten eines
Rezeptes übertragen. CookML entstand daraufhin in Form einer offenen Diskussion
mit diversen Programmierern von Rezept- und Gastronomie-Software, damit das
Austauschformat keine Insellösung darstellt sondern programmübergreifend
Rezeptdaten übertragen kann.
Grundlage von CookML (kurz CML) ist XML. Es
bietet die Möglichkeit alle erdenklichen Zusatzinformationen zu einem Rezept
von Benutzer zu Benutzer auszutauschen. So unterstützt dieses Format auch
Rezeptbilder, Menüs und Zuordnung von Zutaten zum Bundeslebensmittelschlüssel.
Sollte dieses Format in der aktuellen Revision für etwaige Daten eines Rezeptes
nicht ausreichen, so kann dieses Format in Form einer neuen Revision in
Absprache erweitert werden.
CML ist frei benutzbar. Jeder Programmierer
hat die Möglichkeit, dieses Format in seinem eigenen Programm zu benutzen. Es
ist ausdrücklich erwünscht die CML in eigenen Programmen, Projekten, Tools und
Internet-Portalen einzusetzen.
Es sind lediglich folgende Bedingungen einzuhalten:
1. Die folgende Spezifikation muß eingehalten werden. Es dürfen keine Tags
ohne Freigabe einer neuen Revision hinzugefügt oder geändert werden.
2. Alle Felder, die in der DTD als "#Required" also als bindend
definiert sind, müssen sinnvoll unterstützt und bei der Durchreichung mit
weitergegeben werden. Daher wurden nur die wichtigsten Felder als bindend
gekennzeichnet, so daß eine Implementierung sehr einfach ist.
3. Jedes Programm oder sonstige Projekt muß einen Link auf diese Seite
beinhalten, damit dieses Format für jeden einsehbar ist.
4. Wird eine CookML als Datei weitergegeben, so muss die Extension
"*.cml" lauten
XML-Header |
Standard XML-Header |
cookml |
Wurzel der eigentlichen
Daten |
cookml : version |
Revisionsnummer
der CML-Spezifikation, auf die sich die Implementierung bezieht |
cookml : name |
Name der
Rezeptsammlung in der Datei |
cookml : prog |
Name des
erzeugenden Programmes |
cookml : progver |
Versionsnummer
des erzeugenden Programmes |
cookml : recipe |
Wurzel eines jeden
Rezeptes |
cookml : recipe
: lang |
Sprache des Rezeptes |
cookml : recipe
: head |
Informationszeilen zu
einem Rezept |
cookml : recipe : head
: title |
Titel des Rezeptes |
cookml : recipe : head
: rid |
Eindeutiger Rezept-Ident |
cookml : recipe : head
: servingqty |
Für wieviele Einheiten
(Personen, Stücke usw.) |
cookml : recipe : head
: servingtype |
In welcher
Einheit wird die Menge angegeben (Personen, Stücke usw.) |
cookml : recipe : head
: createdate |
Datum der Ersterstellung |
cookml : recipe : head
: createuser |
Erfasser des Rezeptes |
cookml : recipe : head
: createemail |
EMail des Erfassers |
cookml : recipe : head
: changedate |
Datum der letzten
Änderung |
cookml : recipe : head
: changeuser |
Person, die die letzte
Änderung vorgenommen hat |
cookml : recipe : head
: changeemail |
EMail der letzten
ändernden Person |
cookml : recipe : head
: timeallqty |
Zeitangabe der kompletten
Rezept-Zubereitung |
cookml : recipe : head
: timeprepqty |
Zeitangabe
der Rezept-Vorbereitungszeit |
cookml : recipe : head
: timecookqty |
Zeitangabe
der eigentlichen Kochzeit |
cookml : recipe : head
: costs |
Kosten des Rezepts |
cookml : recipe : head
: country |
Herkunftsland |
cookml : recipe : head
: proteins |
Menge der Eiweisse/Proteine |
cookml : recipe : head
: carbohydrates |
Menge der Proteine |
cookml : recipe : head
: Fat |
Menge der Fette |
cookml : recipe : head
: wwpoints |
Weight-Watcher Punkte oder ähnliches |
cookml : recipe : head : cat |
Kategorien
(Rezept-Gruppierungen) |
cookml : recipe : head : hint |
Stichworte zum Rezept |
cookml : recipe : head : sourceline |
Mehrzeilige Angabe zur
Quelle |
cookml : recipe : head
: card |
Nähere Beschreibung des
Rezepts (z.B. Restaurantkarte) |
cookml : recipe : head
: allergies |
Allergie-Stoffe |
cookml : recipe : head :
allergies : allergy |
Angaben zu einem Allergie-Stoff |
cookml : recipe : head :
allergies : allergy : name |
Name des Allergie-Stoffes |
cookml : recipe : head :
allergies : allergy : contains |
Allergie-Stoff im Rezept vorhanden |
cookml : recipe : head
: content |
Angabe über Stoffangaben
in einem Rezept |
cookml : recipe : head :
content : type |
Art der Stoffangabe |
cookml : recipe : head :
content : value |
Wert der Stoffangabe |
cookml : recipe : head
: picture |
Rezeptbild |
cookml : recipe : head :
picture : file |
Pfad auf das Bild lokal
oder im Web |
cookml : recipe : head
: picbin |
Rezeptbild
binär als Bestandteil des XMLs |
cookml : recipe : head
: picbin : format |
Format des übertragenen
Binärbildes |
cookml : recipe : custom |
Feld für weitere Daten |
cookml : recipe
: custom : name |
Name eines freien Feldes |
cookml : recipe
: custom : datatype |
Datentyp eines freien
Feldes |
cookml : recipe
: custom : value |
Wert eines freien Feldes |
cookml : recipe : part |
Gruppierung einer
Zutateneinheit |
cookml : recipe :
part:: title |
Benennung einer
Zutatengruppe |
cookml : recipe :
part:: ingredient |
Zutat (Wurzel einer neuen
Zutat) |
cookml : recipe : part
: ingredient : qty |
Benötigte Menge der Zutat |
cookml : recipe : part
: ingredient : unit |
Einheit der Zutat |
cookml : recipe : part
: ingredient : item |
Name der Zutat |
cookml : recipe : part
: ingredient : inote |
Weitere Erläuterungen zur
Zutat |
cookml : recipe : part
: ingredient : bls |
Der Zutat entsprechender
BLS-Code |
cookml : recipe : part
: ingredient : gram |
Gramm-Entsprechung bei
nicht umrechenbaren Einheiten |
cookml : recipe : part
: ingredient : shop |
Flag, ob Zutat auf
Einkaufslisten soll |
cookml : recipe : part
: ingredient : calc |
Flag, ob Zutat bei
Nährwertberechnung mit berücksichtigt werden soll |
cookml : recipe : part
: ingredient : ridlink |
URL auf ein Rezept, dass
als Zutat eingesetzt wird |
cookml : recipe
: preparation |
Anleitungsschritt
(Rezepttext) |
cookml : recipe :
preparation : text |
Anleitungsschritt als
einzelner Textkörper |
cookml : recipe
: preparation : step |
Anleitungsschritt als
Folge von Verarbeitungschritten |
cookml : recipe
: remark |
Anmerkung eines Benutzers |
cookml : recipe :
remark : user |
Der Name des Benutzers
einer Anmerkung |
cookml : recipe :
remark : line |
Eine Zeile der Anmerkung |
cookml : menu |
Ein Menü beginnt |
cookml : menu : title |
Name des Menüs |
cookml : menu : mcustom |
Feld für weitere Daten |
cookml : menu : mcustom
: name |
Name eines freien Feldes |
cookml : menu : mcustom
: datatype |
Datentyp eines freien
Feldes |
cookml : menu : mcustom
: value |
Wert eines freien Feldes |
cookml : menu : mrecipe |
Rezept eines Menüs |
cookml : menu :
mrecipe : title |
Titel des
Menürezeptes |
cookml : menu :
mrecipe : rid |
Rezept-Ident des
Menü-Rezeptes |
cookml : menu :
mrecipe : amount |
Rezeptmenge für Menü (in
der Einheit des Rezeptes) |
cookml : menu :
mrecipe : persons |
Rezeptmenge für Menü
(immer in der Einheit "Personen") |
cookml : menu :
mrecipe : desc |
Nähere Angaben zum
Menü-Rezept |
|
|
XML-Header
XML-Standard-Header
Folgende Header-Zeilen müssen laut XML-Standard implementiert sein.
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="cookml.dtd" type="text/dtd"?>
<?xml-stylesheet href="cookml.xsl" type="text/xsl"?>
cookml
"cookml" stellt die Wurzel aller Rezepte und Menüs dar.
Die Tags prog und progver sind programm-spezifisch und sollte mit dem
Programmname und dessen Versionsnummer bestückt werden, die das XML erzeugen..
<cookml version=" 0.1" prog="cook"
progver="2.01">
cookml
: version
Revisionsnummer der Spezifikation.
Version gibt die Revisisionsnummer derjenigen CookML-Spezifikation an, auf
die sich die Implementierung des erzeugenden Programmes bezieht.
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: name
Name der Rezeptsammlung.
Oft werden ganze Rezeptpakete geschnürt und diesen paketen werden Namen
gegeben (z.B. "rec.mampf.de 01-03/2002"). Sofern ein CML ein solches
Paket darstellt und einen Namen hat, kann dieser hier eingetragen werden und
damit das Paket kennzeichnen.
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Optional |
Kompatibilität: |
|
cookml
: prog
Name des erzeugenden Programmes.
Hier muss das Programm, das die CML-Datei erzeugt, seinen Namen
hinterlassen. Zusamen mit dem Attribut 'progver' ist dies für die
Fehlersuche ein wichtiger Hinweis und ist daher Pflicht.
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: progver
Versiosnummer des erzeugenden Programmes.
DBeschreibung siehe 'cookml:prog'.
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe
"recipe" leitet ein neues Rezept ein.
Dieses Tag stellt die Wurzel eines jeden Rezepts dar. recipe kann in einer
Datei beliebig oft wiederholt werden.
Datentyp: |
complex typ, XML-Element,
Sequenz |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe
: lang
"lang" definiert die Sprache in dem das Rezept abgefasst wurde
Zwar ist es dem Programm prinzipiell egal, in welcher Sprache das Rezept
vorliegt, dennoch ist die Information später wichtig für die automatische
Umwandlung von Einheiten in die Sprache des Benutzers. So kann man bei
US-Rezepten nicht-metrische Einheiten automatisch in Landeseinheiten umrechnen
(z.B. oz in gramm).
Die erlaubten Sprachkürzel isnd folgender Seite zu entnehmen: http://lcweb.loc.gov/standards/iso639-2/englangn.html
Datentyp: |
string,
XML-Attribut, Singulär |
Unterstützung: |
Muss in jedem Rezept
gesetzt werden, muss von der Applikation unterstützt werden |
Kompatibilität: |
Alle |
cookml
: recipe : head
"head" leitet eine Section mit weiteren Rezeptinformationen ein
Die Länge ist zwar nicht begrenzt aber man sollte den Titel nicht zu lang
wählen, damit keine Probleme bei der Anzeige oder beim Druck auftreten. Auch
sollte man daran denken, dass die weitergegeben Rezepte eventuell im
Mealmaster-Format weitergegeben werden könnten und dann bei 64 Zeichen
abgeschnitten werden
Datentyp: |
complex type,
XML-Element, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe : head : title
"title" gibt den Namen des aktuellen Rezeptes an.
Die Länge ist zwar nicht begrenzt aber man sollte den Titel nicht zu lang
wählen, damit keine Probleme bei der Anzeige oder beim Druck auftreten. Auch
sollte man daran denken, dass die weitergegeben Rezepte eventuell im
Mealmaster-Format weitergegeben werden könnten und dann bei 64 Zeichen
abgeschnitten werden
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe : head :
rid
"RID" kennzeichnet jedes Rezept rechnerübergreifend mit einem
eindeutigen Ident.
Bei der Erzeugung eines Rezeptes wird eine eindeutige ID generiert, die
jedes Rezept eindeutig kennzeichnet. Dadurch kann man Bezug nehmen auf andere
Rezepte, z.B. auf Grundteige als Bestandteil des aktuellen Rezeptes. Oder man
verweist bei der Zusammenstellung eines Menüs nur noch auf Rezepte.
Das erste Programm, dass solche Idents eingesetzt hat, war Ambrosio. Daher wurde
das Format der Ambrosio-Ident hier übernommen.
Am Ende des Dokument gibt es ein Kapitel "Aufbau der Rezept-ID:", in
dem beschrieben ist wie die RID aufgebaut ist.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe : head
: servingqty
Für wieviele Einheiten (Personen, Stücke usw.)
In servingtype steht die Einheit, die dem Rezept zugewiesen wurde (z.B.
Portionen, Stück usw). In servingqty wird die Anzahl dieser Einheiten
angegeben, für die das Rezept ausgelegt ist.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml : recipe
: head :
servingtype
In welcher Einheit wird die Menge angegeben (Personen, Stücke usw.)
In servingtype steht die Einheit, die dem Rezept zugewiesen wurde (z.B.
Portionen, Stück usw). In servingqty wird die Anzahl dieser Einheiten
angegeben, für die das Rezept ausgelegt ist.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe : head :
createdate
Datum der Ersterstellung
Hier wird das Tagesdatum festgehalten, an dem das Rezept erstellt worden ist.
Dieses Datum darf später nicht mehr verändert werden können (z.B. durch
Änderungen am Rezept).
Das Format für jedes Datum ist: "2003-02-16T10:00:00"
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe : head :
createuser
Erfasser des Rezeptes
Hier wird der Name des Erfassers festgehalten, der das Rezept verfasst hat.
Dieses Datum darf später nicht mehr verändert werden können (z.B. durch
Änderungen am Rezept).
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Zwingend. |
Kompatibilität: |
Alle |
cookml
: recipe : head :
createemail
EMail des Erfassers
Hier wird die EMail des Erfassers festgehalten, der das Rezept verfasst hat.
Dies kann zur Kontaktaufnahme oder Nachfragen sinnvoll sein.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head :
changedate
Datum der letzten Änderung
Hier wird das Tagesdatum festgehalten, an dem das Rezept zum letzten Mal
verändert wurde. Die Information über die vorletzte Änderung wird dabei
überschrieben.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Muss in jedem Rezept
gesetzt werden, muss von der Applikation unterstützt werden |
Kompatibilität: |
Alle |
cookml : recipe
: head :
changeuser
Person, die die letzte Änderung vorgenommen hat
Hier wird der Name der Person festgehalten, der das Rezept zum letzten Mal
verändert wurde. Die Information über die vorletzte Änderung wird dabei
überschrieben.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia,
Kalorio |
cookml : recipe : head
: changeemail
EMail der letzten ändernden Person
Hier wird die EMail der Person festgehalten, der das Rezept zum letzten Mal
verändert wurde. Die Information über die vorletzte Änderung wird dabei
überschrieben.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia,
Kalorio |
cookml : recipe
: head :timeallqty
Zeitangabe der kompletten Rezept-Zubereitung
timeallqty gibt den Zeitaufwand an, der
insgesamt für das Rezept aufzuwenden ist inklusive Vorbereitungs- und
Kochphase.
Die Einheit ist immer Minuten.
Datentyp: |
non negative integer,
XML-Attribut von head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia,
Kalorio |
cookml
: recipe : head
: timeprepqty
Zeitangabe der Rezept-Vorbereitungszeit
Gibt den abgeschätzten Zeitraum an, der für
die Vorbereitungsphase der Rezeptzubereitung zu erwarten ist. Die Einheit ist
immer Minuten.
Datentyp: |
non
negative integer,
XML-Attribut von head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia,
Kalorio |
cookml
: recipe : head :
timecookqty
Zeitangabe der eigentlichen Kochzeit
Gibt den abgeschätzten Zeitraum an, der für
die eigentliche Kochphase der Rezeptzubereitung zu erwarten ist. Die Einheit ist
immer Minuten.
Datentyp: |
non negative integer,
XML-Attribut von head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia,
Kalorio |
cookml
: recipe : head :
costs
Kosten des Rezepts
Gibt umgangssprachlich die zu erwartenden Kosten an, die für das Rezept
aufzuwenden sind. Eine Weiterverarbeitung dieser Information durch Programme ist
nicht vorgesehen, diese Angabe hat nur informativen Charakter.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : head :
country
Herkunftsland
Gibt das Land oder die Gegend an, aus der das Rezept kulinarisch stammt.
Datentyp: |
string, XML-Attribut von
head, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
KalorioNext |
cookml
: recipe : head :
Eiweisse
Anteil der Eiweisse/Proteine
Gibt den Anteil/Menge der Eiweisse/Proteine an den Kalorien an.
Die Angaben sind pro Portion anzugeben und müssen daher bei der Umrechnung der Portionsmenge nicht umgerechnet werden.
Datentyp: |
string,
XML-Attribut, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head :
Kohlenhydrate
Anteil der Kohlenhydrate
Gibt den Anteil/Menge der Kohlenhydrate an den Kalorien an.
Die Angaben sind pro Portion anzugeben und müssen daher bei der Umrechnung der Portionsmenge nicht umgerechnet werden.
Datentyp: |
string,
XML-Attribut, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head :
Fette
Anteil der Fette
Gibt den Anteil/Menge der Fette an den Kalorien an.
Die Angaben sind pro Portion anzugeben und müssen daher bei der Umrechnung der Portionsmenge nicht umgerechnet werden.
Datentyp: |
string,
XML-Attribut, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head :
wwpoints
Weight-Watcher Punkte
Die Weight-Watcher-Gemeinde hat mich des öfteren angeschrieben, daß Sie
ein Feld zur Angabe der Weight-Watcher-Punkte benötigen. Bei diesen Punkten
werden jedem Gericht eine bestimmte Anzahl von Punkten zugewiesen. Hier werden
die Punkte für das Gesamtrezept, also für alle Portionen addiert aufgenommen.
Datentyp: |
float,
XML-Attribut, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head : cat
Kategorien (Rezept-Gruppierungen)
In jedem cat-Eintrag wird eine Rezeptkategorie festgelegt. Die Bezeichnungen
der Kategorien sind nicht genormt und können sich von Benutzer zu Benutzer
unterscheiden. Geplant ist eine Standardisierung, in der eine sinnvolle Menge an
Kategorien vorgeschlagen wird.
Datentyp: |
string, XML-Element,
Sequenz |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : head : sourceline
Quellenangaben
Sofern die Quelle des Rezeptes bekannt ist sollte die Quelle der fariness
halber dem Rezept beigefüggt sein. In den Sourcelines kann man diese Quelle
aufführen.
Datentyp: |
string, XML-Element,
Sequenz |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : head : hint
Stichworte zu einem Rezept
Zu einem Rezept können beliebige Stichwörter hinzugefügt werden. Meistens
kann nach diesen Stichworten auch gesucht werden. Im Gegensatz zu ing:cat gibt
es keine Bestrebungen, diese zu normieren, es sind also freie Texte zur freien
Verwendung.
Datentyp: |
string, XML-Element,
Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : head :
card
Nähere Beschreibung des Rezepts (z.B. Restaurantkarte)
Sofern aus einer Rezeptzusammenstellung eine Speisekarte oder Menükarte
erstellt werden soll, können hier erklärende Texte zum Rezept oder der
Rezepttitel in anderen Sprachen aufgenommen werden.
Datentyp: |
string, XML-Element,
Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: recipe : allergies
Allergien
In diesem Tag sammeln sich alle Allergie-Informationen.
Datentyp: |
string, XML-Element, Single |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : allergies : allergy
Allergie-Angabe
Hier werden die Werte für eine Allergie angegeben.
Datentyp: |
string, XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : allergies : allergy : name
Name des allergenen Stoffes
Datentyp: |
string, XML-Element |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : allergies : allergy : contains
Ist der allergene Stoff vorhanden
'F'=Frei von diesem allergischen Stoff, 'C'-contains, enthält diesen allergischen Stoff
Datentyp: |
string, XML-Element |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head :
content
Inhalt eines Rezeptes (Stofflicher Art)
Hier kann die Summe aller IInhaltsstoffe bezüglich eines Stoffes laut
Bundelebensmittelschlüssel abgelegt werden. Die meisten Programme werden hier
eine Kalorienangabe ablegen, aber es ist auch die Übermittlung von
Vitamingehalten, Broteinheiten usw. möglich.
Ein Datensatz besteht immer aus 2 Teilen: Der Stoffangabe (Schlüssel = Kürzel
der Bundeslebensmittelschlüssel) und die Menge (gleiche Einheit wie die, die im
Bundeslebensmittelschlüssel vorgesehen ist.
Ausnahmen:
1. nur quantitative BLS-Stoffe (DIE BLS-Datenbank gibt diese Info her). Strings
sind hier nicht sinnvoll wie zB "BLS-Code" der ja auch in dieser Liste
steht.
Beispiel:
<content type="GCAL" value="627"/> // Kalorien in kCal
<content type="GKB" value="42"/> // Broteinheiten
Datentyp: |
complex type, XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head :
content : type
Kennzeichnung des Stoffes
Beschreibung siehe recipe : content
Datentyp: |
string, XML-Attribut von
content |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : head :
content : value
Menge eines Stoffes
Beschreibung siehe recipe : content
Datentyp: |
string, XML-Attribut von
content |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : head : picture
Rezeptbild (Dateiname)
Hier wird ein Bild zu einem Rezept in Form eines Dateinamens festgelegt. Die
Datei befindet sich dabei nur lokal bei dem Benutzer auf der Festplatte und ist
daher nur sinnvoll, wenn entweder die Dateihierarchie immer gleich ist, oder
sich alle Bilder in einem festgelegten Verzeichnis befinden und hier nur der
Dateiname ohne Pfad angegeben wird.
Datentyp: |
complex type,
XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : head : picture
: file
Pfad auf das Bild lokal im Netzwerk
Hier wird ein Bild zu einem Rezept in Form eines Dateinamens oder einer URL festgelegt.
Sofern hier das Feld für eine URL benutzt wird ist eine komplette URL Pflicht
(http://www.???.com/???.JPG. Das Format ist nicht festgelegt aber aus Gründen
der Verbreitung ist JPG zu preferieren.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : head : picbin
Rezeptbild binär als Bestandteil des XMLs
Hier wird ein Bild binär als Bestandteil der XML-Datei mitgeschickt. Dabei
ist das Bild mit Mime64 zu einem 7-Bit Zeichensatz zu konvertieren.
Datentyp: |
mime64, XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head : picbin
: format
Format der Bilddatei
Um ein besseres Handling eines mitgeschickten Bildes zu erreichen, muss bei
der Übertragung eines Binärbildes dessen Format hier mit übermittelt werden.
Dabei muss immer die allgemein gültige Extension in Grossbuchstaben benutzt
werden.
Festgelegt sind bislang: BMP, JPG, PNG, TIF
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Kalorio |
cookml
: recipe : head : custom
Freie Felderdefinition
In diesem Tag lassen sich beliebige eigene Informationen unterbringen. Bitte
bei der Verwendung immer daran denken, daß eigene Informationen, die hier
untergebracht werden nicht von Benutzern anderer Programme ausgewertet werden
können. Es ist sinnvoll, Informationen, die allgemein sinnvoll sind hier zur
Standardisierung anzumelden. Nur so kann ein Wildwuchs vermieden werden.
"custom" setzt sich zusammen aus den Attributen "name",
"datatype" und "value". Name muss in jedem
"custom"-Tag vorhanden sein, da es die Aufgabe des Knotens
spezifiziert.
Datentyp: |
string, XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : head : custom
: name
Name eines freien Feldes
Beschreibung siehe "cookml:recipe:custom"
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend |
Kompatibilität: |
Kalorio |
cookml
: recipe : head : custom
: datatype
Name eines freien Feldes
Beschreibung siehe "cookml:recipe:custom"
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend
|
Kompatibilität: |
|
cookml
: recipe : head : custom
: value
Wert eines freien Feldes
Beschreibung siehe "cookml:recipe:custom"
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend
|
Kompatibilität: |
Kalorio |
cookml
: recipe :
part
Definition einer Zutatengruppe
Zutaten sind oft sortiert zu Einheiten wie Teig oder Belag. Eine solche
Einheit ist hier definierbar. Sofern man der Einheit eine Überschrift geben
möchte, kann man dieses über das Attribut "title" tun.
Datentyp: |
complex type,
XML-Element, Sequenz |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part
: title
Benennung einer Zutatengruppe
Zutaten sind oft sortiert zu Einheiten wie Teig oder Belag. Eine solche
Einheit ist hier definierbar. Sofern man der Einheit eine Überschrift geben
möchte, kann man dieses über das Attribut "title" tun.
Datentyp: |
complex type,
XML-Attribut |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part
: ingredient
Zutat (Wurzel einer neuen Zutat)
Eine neue Zutat beginnt.
Datentyp: |
complex type,
XML-Element, Sequenz |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part
: ingredient : qty
Benötigte Menge der Zutat
Hier wird mit einer Zahl die Menge der Einheit beschrieben. Diese Zahl
bezieht sich immer auf ing:unit. Erlaubt sind nur Dezimalzahlen. Brüche müssen
zuvor in Gleitkommazaheln umgerechnet werden.
Datentyp: |
float,
XML-Attribut, Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part
: ingredient :
unit
Einheit der Zutat
Die Einheit der Zutatenbeschreibung. Damit die Rezepte international
ausgetauscht werden können, dürfen keine nationalen Einheiten benutzt werden
sondern ausschliesslich amerikanische Einheiten. Hierfür gibt es einen
Quasi-Standard bei Rezepten: Meal-Master. In Unit dürfen nur gültige
Mealmaster-Einheiten Verwendung finden. Eine Liste der erlaubten Einheiten und
deutschen Entsprechungen gibt es im Kapitel "Erlaubte
Einheiten".
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part
: ingredient :
item
Name der Zutat
Der Name der eigentlichen Zutat. Hier darf wirklich nur der Name aufgeführt
sein und nicht eine nähere Beschreibung (diese ist in inote anzugeben). Statt
also "Festkochende Kartoffeln" hier anzugeben darf nur
"Kartoffel" stehen und in inote dann "festkochend".
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part : ingredient
: inote
Weiterreichende Beschreibung der Zutat
In ing:item darf nur der Name stehen. Sind weitere Beschreibungen nötig, so
können sie hier getrennt vom Name der Zutat aufgeführt werden. Statt also
"Festkochende Kartoffeln" anzugegeben darf nur
ing:item="Kartoffel" sein und <inote>festkochend</inote>
Datentyp: |
string, XML-Element von
head, Sequenz |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : part : ingredient
: bls
Der Zutat entsprechender BLS-Code
Der BLS-Schlüssel der der Zutat entspricht oder zumindest sehr nahe kommt.
Durch die Zuweisung von BLS-Schlüssel an die Zutaten ist eine jederzeitige
Berechnung beliebiger Inhaltsstoffe des Rezeptes möglich.
Wichtig: Auch wenn ein Programm den BLS nicht selbst unterstützt, müssen diese
Schlüssel beim Import/Export mit durchgereicht werden.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Unterstützung ist optional. Daten
müssen aber durchgereicht werden. |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: recipe : part : ingredient
: gram
Gramm-Entsprechung bei nicht umrechenbaren Einheiten
Manche Einheiten können nicht direkt in Gramm umgerechnet werden. Für eine
Berechnung der Nährstoffe zu einer Zutat ist in Verbindung mit dem
Bundeslebensmittel-Schlüssel eine Mengenentsprechung in Gramm notwendig, die
hier dann zusammen mit der Zutat angelegt werden kann. Bei "1 Packung
Vanillepulver" kann man also hier "30" (Gramm) angeben. Vorteil
der Speicherung: Man macht diese Zuweisung der Grammentsprechung einmalig bei
der Rezepterstellung und kann nun die Inhaltsstoffe des Rezeptes jederzeit mit
einem Mausklick berechnen lassen.
Datentyp: |
non negative integer,
XML-Attribut, Singulär |
Unterstützung: |
Unterstützung ist optional. Daten
müssen aber durchgereicht werden. |
Kompatibiltät: |
Ambrosia, Kalorio |
cookml
: recipe : part : ingredient
: shop
Flag, ob Zutat auf Einkaufslisten soll
Sofern hier der Buchstabe "N" steht, taucht die Zutate bei einer
Erstellung einer Einkaufsliste zum Rezept nicht auf. Fehlt dieses Tag zu einer
Zutat, so wird die Zutat standardmässig mit auf die Einkaufsliste genommen.
Datentyp: |
bool ("true"
oder "false"), XML-Attribut, Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml
: recipe : part
: ingredient :
calc
Flag, ob Zutat bei Nährwertberechnung mit berücksichtigt werden soll
Bei der Berechnung der Inhaltsstoffe eines Rezeptes gibt es immer wieder
Zutaten, die für die Berechnung keine Rolle spielen. Diese Zutaten kann man als
für die Berechnung unbedeutend kennzeichnen, in dem man calc="N"
setzt. Die Zutat wird dann bei der Ermittlung der Inhaltsstoffberechnung nicht
berücksichtigt. Fehlt dieses Attribut bei einem Rezept, so wird die Zutat in
die Berechnung mit eingezogen.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Unterstützung ist optional. Daten
müssen aber durchgereicht werden |
Kompatibilität: |
Kalorio |
cookml
: recipe : part : ingredient
: ridlink
URL auf ein Rezept, dass als Zutat eingesetzt wird
In manchen Rezepten wird ein anderes Rezept als Grundzutat benutzt. In
diesem Falle kann man einer Zutat einen Link auf ein anderes Rezept zuweisen. Im
Programm selbst könnte man dadurch einen direkten Sprung zu dem Grundrezept
ermöglichen.
Der Link besteht dabei aus einer Rezept-ID die recipe:RID entspricht. Schön
wäre es, wenn man auch in Web-Rezeptdatenbank einmal nach diesen
übergreifenden Rezept-IDs suchen könnte.
Ein Beispiel wäre "Grundteig Mürbeküchen" als Grundlage für einen
Obstkuchen.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
|
cookml
: recipe : preparation
Anleitungsschritt (Rezepttext)
Dieser Knoten kapselt alle Verarbeitungsschritte. Dabei gibt es zwei
Möglichkeiten:
1. Der gesamte Text wird in einem Tag "text" aufgenommen inklusive
aller Zeilenumbrüche und Leerzeilen. "text" darf dabei genau einmal
unterhalb von "preparation" vorkommen.
2. Jeder Verarbeitungsschritt wird in einem eigenen Knoten "step"
aufgenommen. Step darf beliebig oft unterhalb von "preparation vorkommen.
Die Anzahl der "step"-Knoten entspricht also der Anzahl der
Veranreitungsschritte. Zwischen den Verarbeitungsschritten sollte das Programm
einen Absatz oder Leerzeile in der Anzeige einfügen, da Leerzeilen am Ende
nicht Bestandteil eines steps sein sollten.
Beim Export einer "preparation" darf entweder "test" oder
"step" eingesetzt werden aber nicht gemischt.
Datentyp: |
string, XML-Element,
Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : preparation
: text
Anleitungsschritt (Rezepttext) als kompletter Textkörper
Siehe Beschreibung zu "preparation"
Datentyp: |
string, XML-Element,
Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : preparation
: step
Anleitungsschritt (Rezepttext) als Folge von Verarbeitungsschritten
Siehe Beschreibung zu "preparation"
Datentyp: |
string, XML-Element,
Singulär |
Unterstützung: |
Zwingend |
Kompatibilität: |
Alle |
cookml
: recipe : remark
Anmerkung eines Benutzers
In jedem remark kann der Anwender eine eigene Anmerkung zum Rezept ablegen.
Dadurch ist die Unterstützung von Fliestext gewährleistet und man muss die
Rezepttexte nicht mehr nach 70 oder weniger Spalten radikal umrechen.
Datentyp: |
complex type,
XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
|
cookml
: recipe : remark
: user
Der Name des Benutzers einer Anmerkung
Damit beim Export später noch sichtbar ist, wer die jeweilige Anmerkung
gemacht hat, kann hier ein zugehöriger Benutzername mit angegeben werden.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Kalorio |
cookml : recipe
: remark
: line
Eine Zeile der Anmerkung
Hier wird eine Zeile einer Anmerkung abgelegt.
Datentyp: |
string, XML-Element,
Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia, Kalorio |
cookml
: menu
Ein Menü beginnt
Neben den Rezepten kann cookML auch ganze Menüs übermitteln. Dabei ist
eine Menüdefinition immer nur als Linkliste auf externe rezepte zu sehen.
Innerhalb eines Menüs werden keine Rezepte definiert.
Es ist natürlich möglich, im gleichen cml-File auch gleichzeitig die
entsprechenden Rezepte und/oder Getränke mit zu liefern aber eben dann in den
recipes.
Datentyp: |
complex type,
XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : title
Name des Menüs
Jedes anständige Menü braucht auch einen Namen um es anzupreisen. Dieser
kann hier einem Menü zugewiesen werden.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : mcustom
Freie Felderdefinition
In diesem Tag lassen sich beliebige eigene Informationen unterbringen. Bitte
bei der Verwendung immer daran denken, daß eigene Informationen, die hier
untergebracht werden nicht von Benutzern anderer Programme ausgewertet werden
können. Es ist sinnvoll, Informationen, die allgemein sinnvoll sind hier zur
Standardisierung anzumelden. Nur so kann ein Wildwuchs vermieden werden.
"custom" setzt sich zusammen aus den Attributen "name",
"datatype" und "value". Name muss in jedem
"custom"-Tag vorhanden sein, da es die Aufgabe des Knotens
spezifiziert.
Datentyp: |
string, XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : mcustom : name
Name eines freien Feldes
Beschreibung siehe "cookml:menu:custom"
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Zwingend |
Kompatibilität: |
Ambrosia |
cookml
: menu : mcustom :
datatype
Name eines freien Feldes
Beschreibung siehe "cookml:menu:custom"
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : mcustom : value
Wert eines freien Feldes
Beschreibung siehe "cookml:menu:custom"
Datentyp: |
string, XML-Attribut |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu :
mrecipe
Rezept eines Menüs
Hier können hintereinander Rezepte zu einem Menü zusammengefasst werden.
Achting: Es ist bindend, dass alle Rezepte, die im Menü auftauchen in der
gleichen CML-Datei mitgeschickt werden. Ansonsten fehlen all zu leicht Rezepte.
Datentyp: |
complex type,
XML-Element, Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : mrecipe
: amount
Mengenangabe für Menü-Rezepte
Dient zur Angabe auf wieviele Einheiten das Rezepts im aktuellen Menü
Verwendung finden soll. (also die klassische Hochrechnung der Rezeptmenge auf
die im Menü geplante Menge des Rezeptes)
Die Einheit entspricht dabei immer der Einheit, die auch im Rezept Verwendung
findet
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : mrecipe
: persons
Mengenangabe für Menü-Rezepte
Gibt unabhängig von der im Rezept verwendeten Einheit die Anzahl der
Personen an, für die das Rezept im Menü vorgesehen ist. Einheit ist immer
"Personen". Sinnvoll, da viele Rezepte gerade in der Gastronomie
andere Einheiten haben (z.B. "Liter").
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
|
cookml
: menu : mrecipe
: rid
Rezept-Ident des Menü-Rezeptes
In dem Menü-Strukturen selbst werden keine Rezepte mitgeliefert. Alle
Rezepte werden hier nur als Link angegeben. Der Link bezieht sich dabei auf die
Angaben recipe:RID.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
|
cookml
: menu : mrecipe
:title
Name des Menü-Rezeptes
Zur Sicherheit hier auch der Titel des Rezeptes. Er sollte mit jedem Rezept
angegeben sein, falls die Rezept-ID nicht gefunden wird.
Datentyp: |
string, XML-Attribut,
Singulär |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
cookml
: menu : mrecipe : desc
Nähere Angaben zum Menü-Rezept
Da das Rezept innerhalb eines Menüs oftmals eine besondere ihm zugedachte
Stellung einnehmen kann, ist es möglich hier eine eigens für das Menü
passende Beschreibung mitzugeben.
Datentyp: |
string, XML-Element,
Sequenz |
Unterstützung: |
Optional |
Kompatibilität: |
Ambrosia |
Verwendeter
Zeichensatz:
CML-Dateien werden immer unter Verwendung der UTF-8-Codierung erzeugt.
UTF-8 ist die einfachste Form von Unicode: Jedes ASCII-Zeichen mit einem
ASCII-Wert <127 wird weiterhin als ASCII-Zeichen verwendet. Sonderzeichen mit
einem ASCII-Wert >= 127 sind als 16-Bit-Unicode, also in Form von 2 Bytes zu
übertragen. Viele Bibliotheken übernehmen diese Umwandlung. Falls diese
Umsetzung selbst programmiert wird, bietet folgende Umsetzungstabelle eine
Hilfe.
Ä (0xC384) |
ä (0xC3A4) |
À (0xC380) |
à (0xC3A0) |
Á (0xC381) |
á (0xC3A1) |
 (0xC382) |
â (0xC3A2) |
à (0xC383) |
ã (0xC3A3) |
|
|
È (0xC388) |
è (0xC3A8) |
É (0xC389) |
é (0xC3A9) |
Ê (0xC38A) |
ê (0xC3AA) |
Ë (0xC38B) |
ë (0xC3AB) |
|
|
Ì (0xC38C) |
ì (0xC3AC) |
Í (0xC38D) |
í (0xC3AD) |
Î (0xC38E) |
î (0xC3AE) |
Ï (0xC38F) |
ï (0xC3AF) |
Ö (0xC396) |
ö (0xC3B6) |
Ò (0xC392) |
ò (0xC3B2) |
Ó (0xC393) |
ó (0xC3B3) |
Ô (0xC394) |
ô (0xC3B4) |
Õ (0xC395) |
õ (0xC3B5) |
Ü (0xC39C) |
ü (0xC3BC) |
Ù (0xC399) |
ù (0xC3B9) |
Ú (0xC39A) |
ú (0xC3BA) |
Û (0xC39B) |
û (0xC3BB) |
|
|
ß (0xC39F) |
Æ (0xC386) |
æ (0xC3A6) |
Ç (0xC387) |
ç (0xC3A7) |
Ñ (0xC391) |
ñ (0xC3B1) |
|
|
|
° (0xC2B0) |
© (0xC2A9) |
¼ (0xC2BC) |
½ (0xC2BD) |
¾ (0xC2BE) |
ø (0xC3B8) |
|
|
|
|
Aufbau der Rezept-ID:
Die Rezept-IDs müssen immer nach dem gleichen Schema aufgebaut werden. Hier
wird die ID von Rolf Wilhelm eingesetzt, der diese schon seit einiger Zeit in
seinem Programm Ambrosia einsetzt und die allgemein akzeptiert ist.
Die CookML-Rezept-ID besteht immer aus zwei 32 Bit Werten.
Wert 1:
Kodiertes Datum Bit 0-30
0 1 2 3
Bit 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Minute |Stunde |Tag |Monat |Jahr-1980
6 Bit 5 Bit 5 Bit 4 Bit 11 Bit
Wert 2:
0 1 2 3
Bit 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Serial-ID |Creator-ID
20 Bit 12 Bit
Generator-ID:
Der in Windows bekannte Benutzername wird wie folgt aufsummiert:
For Each Character: Creator-ID += Ascii(Character) * Character-Position
Character-Position: 1-n
Überläufe werden ignoriert, ebenso Gross/Kleinschreibung
Serial-ID:
Beginnend mit einem Zufallswert wird der Counter bei jeder
Fingerprint-Neugenerierung
um 1 hochgezählt, ein Überlauf wird ignoriert.
Update:
Verfügt ein Objekt über einen gültigen Fingerprint, so wird im Falle eines
Update
nur noch das Datum angepasst, Serial-ID sowie Creator-ID bleiben gleich.
Dies ist im Gegensatz zur ersten Implementierung der wesentliche Unterschied,
hier
wurde der damalige "Counter" (jetzt neu "Serial-ID") um eins
erhöht sowie die
Creator-ID auf den aktuellen Wert angepasst. Die Korrektur wurde notwendig, um
neue
Versionen eines Objektes identifizieren zu können.
Erlaubte Einheiten für die Zutaten
CookML ist ein internationales Format. Daher sind alle Einheiten im
amerikanischen Format anzugeben und gegebenenfalls umzurechnen.
Im Folgenden ein Liste, in der links die für den Transfer erlaubten Einheiten
und rechts die deutsche Entsprechung stehen.
Diese Liste entspricht den Mealmaster-Einheiten und erleichtert die
Implementierung, sofern das Mealmaster-Format auch unterstützt wird.
fl fluid ounce |
~ 30 ml |
x per serving |
pro Portion |
c cup |
= 250 ml |
sm small |
klein |
pt pint |
1/2 Liter |
md medium |
mittel |
qt quart |
1 Liter |
lg large |
gross |
ga gallon |
4 Liter |
cn can |
Dose |
oz ounce |
~ 30 g |
pk package |
Packung |
lb pound |
~ 450 g |
pn pinch |
Prise, Msp. |
ml milliliter |
ccm |
cb cubic cm |
ccm |
dr drop |
Tropfen |
ds dash |
Schuss, Spur |
cl centiliter |
10 ccm |
ct carton |
Karton |
dc deciliter |
100 ccm = 0,1 Liter |
bn bunch |
Bund |
l liter |
Liter |
sl slice |
Scheibe |
mg milligram |
Milligramm |
ea each |
pro Portion |
cg centigram |
1/100 Gramm |
t teaspoon |
Teeloeffel |
dg decigram |
1/10 Gramm |
ts teaspoon |
Teeloeffel |
g gram |
Gramm |
T tablespoon |
Essloeffel |
tb tablespoon |
Essloeffel |
kg kilogram |
Kilogramm |
Zurück zum Seitenanfang