<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <ref name="ginxml" />
  </start>

  <define name="open-content">
    <zeroOrMore>
      <choice>
        <text />
        <element>
          <anyName />
          <zeroOrMore>
            <attribute>
              <anyName />
              <text />
            </attribute>
          </zeroOrMore>
          <ref name="open-content" />
        </element>
      </choice>
    </zeroOrMore>
  </define>

  <define name="ginxml">
    <element name="ginxml">
      <optional><attribute name="format"><text /></attribute></optional>
      <optional><attribute name="version"><text /></attribute></optional>
      <optional><attribute name="record_type"><text /></attribute></optional>
      <optional><element name="metadata"><ref name="open-content" /></element></optional>
      <optional><element name="recipe"><ref name="open-content" /></element></optional>
      <optional><element name="base_charge"><ref name="open-content" /></element></optional>
      <optional><element name="botanicals"><ref name="open-content" /></element></optional>
      <optional><element name="distillation_log"><ref name="open-content" /></element></optional>
      <optional><element name="cuts"><ref name="open-content" /></element></optional>
      <optional><element name="output_bottling"><ref name="open-content" /></element></optional>
      <optional><element name="sensory"><ref name="open-content" /></element></optional>
      <optional><element name="learning"><ref name="open-content" /></element></optional>
      <optional><element name="review"><ref name="open-content" /></element></optional>
    </element>
  </define>
</grammar>
