Перейти к содержимому

Спецификация CheeseXML

Контролируемое пространство имён: https://www.samovar-tool.ru/cheesexml/ns/1.0

Идентификаторы и версия

Пространство имён определяет документы CheeseXML. Корневая версия CheeseXML сейчас 1.00 и не зависит от XML-декларации.

  • Используйте корневой порядок CHEESEXML, RECIPES, затем RECIPE. id каждого RECIPE — стабильный машинный идентификатор; видимое имя находится в NAME.
  • Храните каждое читаемое человеком значение в T с xml:lang. Читатель выбирает запрошенный язык, затем основной T, затем первый доступный T.
  • Количество использует value и unit. Добавляйте si для нормализованного значения, когда кухонная единица требует однозначного преобразования.

Совместимость

Читатель принимает документы той же основной версии. Новые поля в позднейшей дополнительной версии должны быть optional="true", чтобы старый читатель мог безопасно их игнорировать.

XSD допускает несколько записей RECIPE в одном документе. Импорт портала намеренно принимает ровно один рецепт на загрузку.

Минимальный воспроизводимый пример

Это точный минимальный пример для скачивания.

<?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>

Полный воспроизводимый пример

Полный пример включает метаданные, ингредиенты, оборудование, процесс, хранение и данные источника. Скачать полный пример

Реестр полей и значений

ПолеОбязательное значение
CHEESEXML/@version1.xx с двухзначной дополнительной версией
RECIPE/@idСтабильный машинный идентификатор
METASCHEMA_VERSION, TYPE и DIFFICULTY; необязательны владелец, даты, лицензия и система единиц
TТекст для человека с xml:lang; выберите точный язык, затем его префикс, затем primary=true или 1, затем первый текст. dir может быть ltr, rtl или auto.
Quantityvalue и unit; min, max и si необязательны.
INGREDIENTNAME и AMOUNT; DETAIL, PREP, SUBSTITUTE и NOTES необязательны.
STEPn, phase, code, NAME и INSTRUCTION; PARAMS и NOTES необязательны.

Проверить локально

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

Файлы и API

Базовый адрес публичного API: https://www.samovar-tool.ru/cheesexml/v1/