Case Study: Removing Procedures from the DTD

<!-- DocBook XML V4.3 No Procedures Subset -->

<!ENTITY % ebnf.block.hook "">
<!ENTITY % local.compound.class "">
<!ENTITY % compound.class
                "msgset|sidebar|qandaset
                 %ebnf.block.hook;
                 %local.compound.class;">

<!ENTITY % procedure.content.module "IGNORE">
<!ENTITY % task.content.module "IGNORE">
<!ENTITY % sidebar.element "IGNORE">
<!ENTITY % qandaset.element "IGNORE">
<!ENTITY % qandadiv.element "IGNORE">
<!ENTITY % question.element "IGNORE">
<!ENTITY % answer.element "IGNORE">
<!ENTITY % revdescription.element "IGNORE">
<!ENTITY % caution.element "IGNORE">
<!ENTITY % important.element "IGNORE">
<!ENTITY % note.element "IGNORE">
<!ENTITY % tip.element "IGNORE">
<!ENTITY % warning.element "IGNORE">

<!ENTITY % docbook.dtd PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
                       "http://docbook.org/xml/4.3/docbookx.dtd">
%docbook.dtd;

<!ENTITY % my.sidebar.mix
                "%list.class;           |%admon.class;
                |%linespecific.class;   |%synop.class;
                |%para.class;           |%informal.class;
                |%formal.class;
                |%genobj.class;
                |%ndxterm.class;        |beginpage
                %local.sidebar.mix;">

<!ELEMENT sidebar (sidebarinfo?,
                   (%formalobject.title.content;)?,
                   (%my.sidebar.mix;)+)>

<!ENTITY % my.qandaset.mix
                "%list.class;           |%admon.class;
                |%linespecific.class;   |%synop.class;
                |%para.class;           |%informal.class;
                |%formal.class;
                |%genobj.class;
                |%ndxterm.class;
                %local.qandaset.mix;">

<!ELEMENT qandaset (blockinfo?, (%formalobject.title.content;)?,
                        (%my.qandaset.mix;)*,
                        (qandadiv+|qandaentry+))>

<!ELEMENT qandadiv (blockinfo?, (%formalobject.title.content;)?,
                        (%my.qandaset.mix;)*,
                        (qandadiv+|qandaentry+))>

<!ELEMENT question (label?, (%my.qandaset.mix;)+)>

<!ELEMENT answer (label?, (%my.qandaset.mix;)*, qandaentry*)>

<!ENTITY % my.revdescription.mix
                "%list.class;           |%admon.class;
                |%linespecific.class;   |%synop.class;
                |%para.class;           |%informal.class;
                |%formal.class;
                |%genobj.class;
                |%ndxterm.class;
                %local.revdescription.mix;">

<!ELEMENT revdescription ((%my.revdescription.mix;)+)>

<!ENTITY % my.admon.mix
                "%list.class;
                |%linespecific.class;   |%synop.class;
                |%para.class;           |%informal.class;
                |%formal.class;         |sidebar
                |anchor|bridgehead|remark
                |%ndxterm.class;        |beginpage
                %local.admon.mix;">

<!ELEMENT caution (title?, (%my.admon.mix;)+)
                      %admon.exclusion;>

<!ELEMENT important (title?, (%my.admon.mix;)+)
                      %admon.exclusion;>

<!ELEMENT note (title?, (%my.admon.mix;)+)
                      %admon.exclusion;>

<!ELEMENT tip (title?, (%my.admon.mix;)+)
                      %admon.exclusion;>

<!ELEMENT warning (title?, (%my.admon.mix;)+)
                      %admon.exclusion;>