Skip to content

CheeseXML specification

Controlled namespace: https://www.samovar-tool.ru/cheesexml/ns/1.0

Identifiers and version

The namespace identifies CheeseXML documents. The root CheeseXML version is currently 1.00 and is independent of the XML declaration.

  • Use the root order CHEESEXML, RECIPES, then RECIPE. Each RECIPE id is a stable machine identifier; its visible name belongs in NAME.
  • Store each human-readable value in T with xml:lang. Readers select the requested language, then the primary T, then the first available T.
  • Quantities use value and unit. Add si for a normalized value when the kitchen unit needs an unambiguous conversion.

Compatibility

A reader accepts documents with the same major version. New fields in a later minor version must be optional="true" so an older reader can safely ignore them.

The XSD permits several RECIPE records in one document. The portal import deliberately accepts exactly one recipe per upload.

Minimal reproducible example

This is the exact downloadable minimal example.

<?xml version="1.0" encoding="UTF-8"?>
<CHEESEXML version="1.00" xmlns="https://www.samovar-tool.ru/cheesexml/ns/1.0" defaultLang="en" units="metric">
  <RECIPES><RECIPE id="sample-paneer" version="1"><META><SCHEMA_VERSION>1.00</SCHEMA_VERSION><TYPE>home</TYPE><DIFFICULTY>1</DIFFICULTY><LICENSE>CC-BY-4.0</LICENSE></META><NAME><T xml:lang="en" primary="true">Sample paneer</T></NAME><DESCRIPTION><T xml:lang="en" primary="true">A minimal valid CheeseXML recipe.</T></DESCRIPTION><STYLE family="acid_set" code="acid_set.paneer"/><BATCH><MILK_VOLUME value="1" unit="l" si="1"/><SCALE base="milk_volume" base_value="1" base_unit="l"/></BATCH><MILK species="bos_taurus" treatment="pasteurized" homogenization="none"/><INGREDIENTS><INGREDIENT id="milk" role="base"><NAME><T xml:lang="en" primary="true">Milk</T></NAME><AMOUNT value="1" unit="l" si="1"/></INGREDIENT></INGREDIENTS><PROCESS><STEP n="1" phase="milk_prep" code="heat"><NAME><T xml:lang="en" primary="true">Heat</T></NAME><INSTRUCTION><T xml:lang="en" primary="true">Heat the milk.</T></INSTRUCTION></STEP></PROCESS></RECIPE></RECIPES>
</CHEESEXML>

Full reproducible example

The full example includes metadata, ingredients, equipment, process, storage and source data. Download full example

Field and value registry

FieldRequired value
CHEESEXML/@version1.xx with a two-digit minor version
RECIPE/@idStable machine identifier
METASCHEMA_VERSION, TYPE and DIFFICULTY; optional ownership, dates, license and unit system
THuman text with xml:lang; select exact language, then its prefix, then primary=true or 1, then the first text. dir may be ltr, rtl or auto.
Quantityvalue and unit; min, max and si are optional.
INGREDIENTNAME and AMOUNT; optional DETAIL, PREP, SUBSTITUTE and NOTES.
STEPn, phase, code, NAME and INSTRUCTION; optional PARAMS and NOTES.

Validate locally

curl -O https://www.samovar-tool.ru/cheesexml/specification/CheeseXML-1.0.xsd
curl -O https://www.samovar-tool.ru/cheesexml/specification/xml.xsd
curl -O https://www.samovar-tool.ru/cheesexml/specification/minimal.xml
				curl -O https://www.samovar-tool.ru/cheesexml/specification/full.xml
xmllint --noout --schema CheeseXML-1.0.xsd minimal.xml

Files and API

Public API base: https://www.samovar-tool.ru/cheesexml/v1/