Document Definition Markup Language is an actively used xml format created in 1999. Document Definition Markup Language (DDML) is an XML schema language proposed in 1999 by various contributors from the xml-dev electronic mailing list. It was published only as a W3C Note, not a Recommendation, and never found favor with developers. DDML began as XSchema, a reformulation of XML DTDs as full XML documents, so that elements and attributes, rather than declarations, could be used to describe a schema. Read more on Wikipedia...

21Years Old 20Users ?Jobs

Example code from the web:

<?xml version="1.0"?>

<!DOCTYPE "DocumentDef">

<DocumentDef FileExtension="ddm" prefix="">

  <ElementDecl Name="DocumentDef" Root="Recommended">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
        <Choice Frequency="ZeroOrMore">
          <Ref Element="ElementDecl"/>
          <Ref Element="Model"/>
          <Ref Element="AttDef"/>
          <Ref Element="AttGroup"/>
          <Ref Element="Notation"/>
          <Ref Element="UnparsedEntity"/>
          <Ref Element="Enumeration"/>
          <Ref Element="DocumentDef"/>
        </Choice>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="xmlns" Required="Yes" AttValue="http://www.purl.org/NET/ddml/v1"/>
      <AttDef Name="DDML" prefix="xmlns" Required="Yes" AttValue="http://www.purl.org/NET/ddml/v1"/>
      <AttDef Name="ns"/>
      <AttDef Name="ElementNS"/>
      <AttDef Name="prefix" Type="Nmtoken"/>
      <AttDef Name="Version" Required="Yes" AttValue="1.0"/>
      <AttDef Name="MimeType" AttValue="application/xml"/>
      <AttDef Name="FileExtension" AttValue="xml"/>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="ElementDecl">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
        <Ref Element="Model"/>
        <Ref Element="AttGroup" Frequency="Optional"/>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="Name" Type="Nmtoken" Required="Yes"/>
      <AttDef Name="ns"/>
      <AttDef Name="prefix" Type="Nmtoken"/>
      <AttDef Name="id" Type="ID"/>
      <AttDef Name="Root" Type="Enumerated" AttValue="Possible">
        <Enumeration>
          <EnumerationValue Value="Recommended"/>
          <EnumerationValue Value="Possible"/>
          <EnumerationValue Value="Unlikely"/>
        </Enumeration>
      </AttDef>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Model">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
        <Choice>
          <Ref Element="Ref"/>
          <Ref Element="Choice"/>
          <Ref Element="Seq"/>
          <Ref Element="Empty"/>
          <Ref Element="Any"/>
          <Ref Element="PCData"/>
          <Ref Element="Mixed"/>
        </Choice>
      </Seq>    
    </Model>
    <AttGroup>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Empty">
    <Model>
      <Empty/>
    </Model>
    <AttGroup>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Any">
    <Model>
      <Empty/>
    </Model>
    <AttGroup>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="PCData">
    <Model>
      <Empty/>
    </Model>
    <AttGroup>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Ref">
    <Model>
      <Empty/>
    </Model>
    <AttGroup>
      <AttDef Name="Element" Type="Nmtoken" Required="Yes"/>
      <AttDef Name="ElementNS"/>
      <AttDef Name="id" Type="ID"/>
      <AttDef Name="Frequency" Type="Enumerated" AttValue="Required">
        <Enumeration>
          <EnumerationValue Value="Required"/>
          <EnumerationValue Value="Optional"/>
          <EnumerationValue Value="ZeroOrMore"/>
          <EnumerationValue Value="OneOrMore"/>
        </Enumeration>
      </AttDef>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Mixed">
    <Model>
      <Ref Element="Ref" Frequency="OneOrMore"/>
    </Model>
    <AttGroup>
      <AttDef Name="ElementNS"/>
      <AttDef Name="id" Type="ID"/>
      <AttDef Name="Frequency" Type="Enumerated" Required="Yes" AttValue="ZeroOrMore">
        <Enumeration>
          <EnumerationValue Value="ZeroOrMore"/>
        </Enumeration>
      </AttDef>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Choice">
    <Model>
      <Seq>
        <Choice>
          <Ref Element="Seq"/>
          <Ref Element="Ref"/>
          <Ref Element="Model"/>
        </Choice>
        <Choice Frequency="OneOrMore">
          <Ref Element="Seq"/>
          <Ref Element="Ref"/>
          <Ref Element="Model"/>
        </Choice>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="ElementNS"/>
      <AttDef Name="id" Type="ID"/>
      <AttDef Name="Frequency" Type="Enumerated" AttValue="Required">
        <Enumeration>
          <EnumerationValue Value="Required"/>
          <EnumerationValue Value="Optional"/>
          <EnumerationValue Value="ZeroOrMore"/>
          <EnumerationValue Value="OneOrMore"/>
        </Enumeration>
      </AttDef>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Seq">
    <Model>
      <Seq>
        <Choice>
          <Ref Element="Choice"/>
          <Ref Element="Ref"/>
          <Ref Element="Model"/>
        </Choice>
        <Choice Frequency="OneOrMore">
          <Ref Element="Choice"/>
          <Ref Element="Ref"/>
          <Ref Element="Model"/>
        </Choice>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="ElementNS"/>
      <AttDef Name="id" Type="ID"/>
      <AttDef Name="Frequency" Type="Enumerated" AttValue="Required">
        <Enumeration>
          <EnumerationValue Value="Required"/>
          <EnumerationValue Value="Optional"/>
          <EnumerationValue Value="ZeroOrMore"/>
          <EnumerationValue Value="OneOrMore"/>
        </Enumeration>
      </AttDef>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="AttGroup">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
        <Choice Frequency="ZeroOrMore">
           <Ref Element="AttDef"/>
           <Ref Element="AttGroup"/>
        </Choice>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="ns"/>
      <AttDef Name="prefix" Type="Nmtoken"/>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="AttDef">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
        <Ref Element="Enumeration" Frequency="Optional"/>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="Name" Type="Nmtoken" Required="Yes"/>
      <AttDef Name="ns"/>
      <AttDef Name="prefix" Type="Nmtoken"/>
      <AttDef Name="Type" Type="Enumerated" AttValue="CData">
        <Enumeration>
          <EnumerationValue Value="CData"/>
          <EnumerationValue Value="ID"/>
          <EnumerationValue Value="IDRef"/>
          <EnumerationValue Value="IDRefs"/>
          <EnumerationValue Value="Entity"/>
          <EnumerationValue Value="Entities"/>
          <EnumerationValue Value="Nmtoken"/>
          <EnumerationValue Value="Nmtokens"/>
          <EnumerationValue Value="Notation"/>
          <EnumerationValue Value="Enumerated"/>
        </Enumeration>
      </AttDef>
      <AttDef Name="Required" Type="Enumeration" AttValue="No">
        <Enumeration>
          <EnumerationValue Value="Yes"/>
          <EnumerationValue Value="No"/>
        </Enumeration>
      </AttDef>
      <AttDef Name="AttValue"/>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Enumeration">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequen cy="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
        <Ref Element="EnumerationValue" Frequency="OneOrMore"/>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="EnumerationValue">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="Value" Required="Yes"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Notation">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="Name" Type="Nmtoken" Required="Yes"/>
      <AttDef Name="PubidLiteral"/>
      <AttDef Name="SystemLiteral"/>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="UnparsedEntity">
    <Model>
      <Seq>
        <Ref Element="Doc" Frequency="Optional"/>
        <Ref Element="More" Frequency="Optional"/>
      </Seq>
    </Model>
    <AttGroup>
      <AttDef Name="Name" Type="Nmtoken" Required="Yes"/>
      <AttDef Name="SystemLiteral" Required="Yes"/>
      <AttDef Name="PubidLiteral"/>
      <AttDef Name="Notation" Type="Nmtoken" Required="Yes"/>
      <AttDef Name="id" Type="ID"/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="Doc" prefix="DDML">
    <Model>
       <!-- The struct model from IBTWSH goes here.
            Defining IBTWSH in DDML is left as an
            exercise to the reader.            ;       -->
    </Model>
    <AttGroup>
      <AttDef Name="xmlns" Required="Yes" AttValue=""/>
    </AttGroup>
  </ElementDecl>

  <ElementDecl Name="More" prefix="DDML">
    <Model>
      <Any/>
    </Model>
    <AttGroup>
      <AttDef Name="xmlns" AttValue=""/>
    </AttGroup>
  </ElementDecl>

</DocumentDef>

Last updated February 18th, 2020

Edit Document Definition Markup Language on GitHub