diff options
| author | Phil Schaf | 2014-09-27 14:36:49 +0200 | 
|---|---|---|
| committer | Phil Schaf | 2014-09-27 14:36:49 +0200 | 
| commit | 154b223ecb76e2ae53a3ba54082761f214dadece (patch) | |
| tree | 49d59175080661c7e8c3ced76d93e157f441ceba | |
| parent | 3fc4b127f20368590776e0aa4435f92f62b1f428 (diff) | |
| download | rust-rst-154b223ecb76e2ae53a3ba54082761f214dadece.tar.bz2 | |
more implementations
| -rw-r--r-- | soextblx.dtd | 314 | ||||
| -rw-r--r-- | src/document_tree.rs | 35 | 
2 files changed, 342 insertions, 7 deletions
| diff --git a/soextblx.dtd b/soextblx.dtd new file mode 100644 index 0000000..98501f7 --- /dev/null +++ b/soextblx.dtd @@ -0,0 +1,314 @@ +<!-- XML EXCHANGE TABLE MODEL DECLARATION MODULE --> + +<!-- This set of declarations defines the XML version of the Exchange +     Table Model as of the date shown in the Formal Public Identifier +     (FPI) for this entity. + +     This set of declarations may be referred to using a public external +     entity declaration and reference as shown in the following three +     lines: + +     <!ENTITY % calstblx +       PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"> +       %calstblx; + +     If various parameter entities used within this set of declarations +     are to be given non-default values, the appropriate declarations +     should be given before calling in this package (i.e., before the +     "%calstblx;" reference). +--> + +<!-- The motivation for this XML version of the Exchange Table Model +     is simply to create an XML version of the SGML Exchange Table +     Model. By design, no effort has been made to "improve" the model. + +     This XML version incorporates the logical bare minimum changes +     necessary to make the Exchange Table Model a valid XML DTD. + +     It has been modified slightly for use in the combined HTML/CALS models +     supported by DocBook V4.4b1. +--> + +<!-- The XML version of the Exchange Table Model differs from +     the SGML version in the following ways: + +     The following parameter entities have been removed: + +       - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep +         There are no exceptions in XML. The following normative statement +         is made in lieu of exceptions: the exchange table model explicitly +         forbids a table from occurring within another table. If the +         content model of an entry includes a table element, then this +         cannot be enforced by the DTD, but it is a deviation from the +         exchange table model to include a table within a table. + +       - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att +         The motivation for these elements was to change the table +         header/footer elements. Since XML does not allow element declarations +         to contain name groups, and the exchange table model does not +         allow a table to contain footers, the continued presence of these +         attributes seems unnecessary. + +     The following parameter entity has been added: + +       - tbl.thead.att +         This entity parameterizes the attributes on thead. It replaces +         the tbl.hdft.att parameter entity. + +     Other miscellaneous changes: + +       - Tag ommission indicators have been removed +       - Comments have been removed from declarations +       - NUMBER attributes have been changed to NMTOKEN +       - NUTOKEN attributes have been to changed to NMTOKEN +       - Removed the grouping characters around the content model +         parameter entry for the 'entry' element. This is necessary +         so that an entry can contain #PCDATA and be defined as an +         optional, repeatable OR group beginning with #PCDATA. +--> + +<!-- This entity includes a set of element and attribute declarations +     that partially defines the Exchange table model.  However, the model +     is not well-defined without the accompanying natural language +     description of the semantics (meanings) of these various elements, +     attributes, and attribute values.  The semantic writeup, also available +     from SGML Open, should be used in conjunction with this entity. +--> + +<!-- In order to use the Exchange table model, various parameter entity +     declarations are required.  A brief description is as follows: + +     ENTITY NAME      WHERE USED              WHAT IT IS + +     %yesorno         In ATTLIST of:          An attribute declared value +                      almost all elements     for a "boolean" attribute + +     %paracon         In content model of:    The "text" (logical content) +                      <entry>                 of the model group for <entry> + +     %titles          In content model of:    The "title" part of the model +                      table element           group for the table element + +     %tbl.table.name  In declaration of:      The name of the "table" +                      table element           element + +     %tbl.table-titles.mdl In content model of: The model group for the title +                      table elements          part of the content model for +                                              table element + +     %tbl.table.mdl   In content model of:    The model group for the content +                      table elements          model for table element, +                                              often (and by default) defined +                                              in terms of %tbl.table-titles.mdl +                                              and tgroup + +     %tbl.table.att   In ATTLIST of:          Additional attributes on the +                      table element           table element + +     %bodyatt         In ATTLIST of:          Additional attributes on the +                      table element           table element (for backward +                                              compatibility with the SGML +                                              model) + +     %tbl.tgroup.mdl  In content model of:    The model group for the content +                      <tgroup>                model for <tgroup> + +     %tbl.tgroup.att  In ATTLIST of:          Additional attributes on the +                      <tgroup>                <tgroup> element + +     %tbl.thead.att   In ATTLIST of:          Additional attributes on the +                      <thead>                 <thead> element + +     %tbl.tbody.att   In ATTLIST of:          Additional attributes on the +                      <tbody>                 <tbody> element + +     %tbl.colspec.att In ATTLIST of:          Additional attributes on the +                      <colspec>               <colspec> element + +     %tbl.row.mdl     In content model of:    The model group for the content +                      <row>                   model for <row> + +     %tbl.row.att     In ATTLIST of:          Additional attributes on the +                      <row>                   <row> element + +     %tbl.entry.mdl   In content model of:    The model group for the content +                      <entry>                 model for <entry> + +     %tbl.entry.att   In ATTLIST of:          Additional attributes on the +                      <entry>                 <entry> element + +     This set of declarations will use the default definitions shown below +     for any of these parameter entities that are not declared before this +     set of declarations is referenced. +--> + +<!-- These definitions are not directly related to the table model, but are +     used in the default CALS table model and may be defined elsewhere (and +     prior to the inclusion of this table module) in the referencing DTD. --> + +<!ENTITY % yesorno 'NMTOKEN'> <!-- no if zero(s), yes if any other value --> +<!ENTITY % titles  'title?'> +<!ENTITY % pcd "#PCDATA"> +<!ENTITY % paracon '%pcd;'> <!-- default for use in entry content --> + +<!-- +The parameter entities as defined below change and simplify the CALS table +model as published (as part of the Example DTD) in MIL-HDBK-28001.  The +resulting simplified DTD has support from the SGML Open vendors and is +therefore more interoperable among different systems. + +These following declarations provide the Exchange default definitions +for these entities.  However, these entities can be redefined (by giving +the appropriate parameter entity declaration(s) prior to the reference +to this Table Model declaration set entity) to fit the needs of the +current application. + +Note, however, that changes may have significant effect on the ability to +interchange table information.  These changes may manifest themselves +in useability, presentation, and possible structure information degradation. +--> + +<!ENTITY % tbl.table.name       "table"> +<!ENTITY % tbl.table-titles.mdl "%titles;,"> +<!ENTITY % tbl.table-main.mdl   "tgroup+"> +<!ENTITY % tbl.table.mdl        "%tbl.table-titles.mdl; %tbl.table-main.mdl;"> +<!ENTITY % tbl.table.att        " +    pgwide      %yesorno;       #IMPLIED "> +<!ENTITY % bodyatt              ""> +<!ENTITY % tbl.tgroup.mdl       "colspec*,thead?,tbody"> +<!ENTITY % tbl.tgroup.att       ""> +<!ENTITY % tbl.thead.att        ""> +<!ENTITY % tbl.tbody.att        ""> +<!ENTITY % tbl.colspec.att      ""> +<!ENTITY % tbl.row.mdl          "entry+"> +<!ENTITY % tbl.row.att          ""> +<!ENTITY % tbl.entry.mdl        "(%paracon;)*"> +<!ENTITY % tbl.entry.att        ""> + +<!ENTITY % tbl.frame.attval     "top|bottom|topbot|all|sides|none"> +<!ENTITY % tbl.tbody.mdl        "row+"> + +<!-- =====  Element and attribute declarations follow. =====  --> + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % tbl.table.name       "table" +     ENTITY % tbl.table-titles.mdl "%titles;," +     ENTITY % tbl.table.mdl        "%tbl.table-titles; tgroup+" +     ENTITY % tbl.table.att        " +                        pgwide          %yesorno;       #IMPLIED " +--> + +<!ELEMENT %tbl.table.name; (%tbl.table.mdl;)> + +<!ATTLIST %tbl.table.name; +        frame           (%tbl.frame.attval;)                    #IMPLIED +        colsep          %yesorno;                               #IMPLIED +        rowsep          %yesorno;                               #IMPLIED +        %tbl.table.att; +        %bodyatt; +> + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % tbl.tgroup.mdl    "colspec*,thead?,tbody" +     ENTITY % tbl.tgroup.att    "" +--> + +<!ELEMENT tgroup (%tbl.tgroup.mdl;) > + +<!ATTLIST tgroup +        cols            NMTOKEN                                 #REQUIRED +        colsep          %yesorno;                               #IMPLIED +        rowsep          %yesorno;                               #IMPLIED +        align           (left|right|center|justify|char)        #IMPLIED +        %tbl.tgroup.att; +> + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % tbl.colspec.att   "" +--> + +<!ELEMENT colspec EMPTY > + +<!ATTLIST colspec +        colnum          NMTOKEN                                 #IMPLIED +        colname         NMTOKEN                                 #IMPLIED +        colwidth        CDATA                                   #IMPLIED +        colsep          %yesorno;                               #IMPLIED +        rowsep          %yesorno;                               #IMPLIED +        align           (left|right|center|justify|char)        #IMPLIED +        char            CDATA                                   #IMPLIED +        charoff         NMTOKEN                                 #IMPLIED +        %tbl.colspec.att; +> + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % tbl.thead.att      "" +--> + +<!ELEMENT thead (row+)> + +<!ATTLIST thead +        valign          (top|middle|bottom)                     #IMPLIED +        %tbl.thead.att; +> + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % tbl.tbody.att     "" +--> + +<!ELEMENT tbody (%tbl.tbody.mdl;)> + +<!ATTLIST tbody +        valign          (top|middle|bottom)                     #IMPLIED +        %tbl.tbody.att; +> + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % tbl.row.mdl       "entry+" +     ENTITY % tbl.row.att       "" +--> + +<!ELEMENT row (%tbl.row.mdl;)> + +<!ATTLIST row +        rowsep          %yesorno;                               #IMPLIED +        valign          (top|middle|bottom)                     #IMPLIED +        %tbl.row.att; +> + + +<!-- +     Default declarations previously defined in this entity and +     referenced below include: +     ENTITY % paracon           "#PCDATA" +     ENTITY % tbl.entry.mdl     "(%paracon;)*" +     ENTITY % tbl.entry.att     "" +--> + +<!ELEMENT entry (%tbl.entry.mdl;)*> + +<!ATTLIST entry +        colname         NMTOKEN                                 #IMPLIED +        namest          NMTOKEN                                 #IMPLIED +        nameend         NMTOKEN                                 #IMPLIED +        morerows        NMTOKEN                                 #IMPLIED +        colsep          %yesorno;                               #IMPLIED +        rowsep          %yesorno;                               #IMPLIED +        align           (left|right|center|justify|char)        #IMPLIED +        char            CDATA                                   #IMPLIED +        charoff         NMTOKEN                                 #IMPLIED +        valign          (top|middle|bottom)                     #IMPLIED +        %tbl.entry.att; +> diff --git a/src/document_tree.rs b/src/document_tree.rs index efc424a..4f32608 100644 --- a/src/document_tree.rs +++ b/src/document_tree.rs @@ -1,6 +1,8 @@  ///http://docutils.sourceforge.net/docs/ref/doctree.html  ///serves as AST +//bools usually are XML yesorno. “auto” however either exists and is set to something random like “1” or doesn’t exist +  #![feature(struct_inherit)]  //----------\\ @@ -166,11 +168,11 @@ struct Error:          CompoundBodyElement, BodyModel;  struct Important:      CompoundBodyElement, BodyModel;  struct Tip:            CompoundBodyElement, BodyModel;  struct Warning:        CompoundBodyElement, BodyModel; -struct Footnote:       CompoundBodyElement, FootnoteModel {} //TODO -struct Citation:       CompoundBodyElement, FootnoteModel {} //TODO -struct SystemMessage:  CompoundBodyElement, BodyModel { } //TODO -struct Figure:         CompoundBodyElement, FigureModel { width: uint } //TODO -struct Table:          CompoundBodyElement; +struct Footnote:       CompoundBodyElement, FootnoteModel { backrefs: Vec<ID>, auto: bool } +struct Citation:       CompoundBodyElement, FootnoteModel { backrefs: Vec<ID> } +struct SystemMessage:  CompoundBodyElement, BodyModel { backrefs: Vec<ID>, level: uint, line: uint, type_: NameToken } +struct Figure:         CompoundBodyElement, FigureModel { align: AlignH, width: uint } +struct Table:          CompoundBodyElement; //TODO  struct ListItem:           BodySubElement, BodyModel; @@ -204,7 +206,15 @@ struct CitationReference:     InlineElement;  struct Emphasis:              InlineElement;  struct FootnoteReference:     InlineElement;  struct Generated:             InlineElement; -struct Image:                 InlineElement,          SubFigure; +struct Image:                 InlineElement,          SubFigure { +	align: AlignHV, +	uri: String, +	alt: String, +	height: Measure, +	width: Measure, +	scale: float, +	//TODO: URI type +}  struct Inline:                InlineElement;  struct Literal:               InlineElement;  struct Math:                  InlineElement; @@ -216,7 +226,7 @@ struct SubstitutionReference: InlineElement;  struct Superscript:           InlineElement;  struct Target:                InlineElement;  struct TitleReference:        InlineElement; -struct Raw:                   InlineElement; +struct Raw:                   InlineElement { space: FixedSpace, format: Vec<NameToken> }  struct TextElement: TextOrInlineElement; @@ -236,6 +246,17 @@ enum EnumeratedListType {  enum FixedSpace { Default, Preserve } +enum AlignH { Left, Center, Right} +enum AlignHV { Top, Middle, Bottom, Left, Center, Right } + +struct ID(String); +struct NameToken(String); + +enum Measure { +	Pixel(uint), +	Em(uint), +	//TODO +}  //----\\  //impl\\ | 
