OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   psgml 1.2.1 problem

[ Lists Home | Date Index | Thread Index ]
  • From: Eoin Lane <eoin_lane@esatclear.ie>
  • To: XMLDev list <xml-dev-digest@ic.ac.uk>
  • Date: Mon, 06 Dec 1999 14:32:43 +0000

I'm trying to write a xml doc with emacs configured to use psgml-1.2.1
but am having some problems. I have checked that psgml works with a
simple dtd. However when I use the dtd (document-v10.dtd) below I get
the following error.

~/character.ent line 2 col 12 entity common.att
~/document-v10.dtd line 218 col 29 entity DOCUMENT
~/installing.xml line 3 col 51
Name expected; at: :lang

I wonder could anyone tell me what I am doing wrong. I know the dtd is
correct because I checked it with IBM 4j parser and it validated. it
would be of great benefit to me if I could use the dtd in emacs so any
help would be greatly appreciated.

Eoin.








--

Dr. Eoin Lane
InConn Technologies Ltd.
17 Washington St.
Cork.
Tel. (021) 271855 Fax (021) 272419
http://inconn.ucc.ie
mailto:eoinlane@esatclear.ie


<!-- ===================================================================

     Apache Documentation DTD (Version 1.0)

PURPOSE:
  This DTD was developed to create a simple yet powerful document
  type for software documentation for use with the Apache projects.
  It is an XML-compliant DTD and it's maintained by the Apache XML
  project.

TYPICAL INVOCATION:

  <!DOCTYPE document PUBLIC
       "-//APACHE//DTD Documentation Vx.yz//EN"
       "http://xml.apache.org/DTD/document-vxyz.dtd">

  where

    x := major version
    y := minor version
    z := status identifier (optional)

NOTES:
  Many of the design patterns used in this DTD were take from the
  W3C XML Specification DTD edited by Eve Maler <elm@arbortext.com>.

  Where possible, great care has been used to reutilize HTML tag
  names to reduce learning efforts and to allow HTML editors to be
  used for complex authorings like tables and lists.

AUTHORS:
  Stefano Mazzocchi <stefano@apache.org>

FIXME:
  - how can we include char entities without hardwiring them?
  - should "form" tags be included?
  - should all style-free HTML 4.0 markup tags be included?
  - how do we handle the idea of "soft" xlinks?
  - should we add "soft" links to images?

CHANGE HISTORY:
  19991121 Initial version. (SM)
  19991123 Replaced "res" with more standard "strong" for emphasis. (SM)
  19991124 Added "fork" element for window forking behavior. (SM)
  19991124 Added "img-inline" element to separate from "img". (SM)
  19991129 Removed "affiliation" from "author". (SM)
  19991129 Made "author" empty and moved "name|email" as attributes (SM)

COPYRIGHT:
  Copyright (c) 1999 The Apache Software Foundation.

  Permission to copy in any form is granted provided this notice is
  included in all copies. Permission to redistribute is granted
  provided this file is distributed untouched in all its parts and
  included files.

==================================================================== -->




<!-- =============================================================== -->
<!-- Common character entities (included from external file) -->
<!-- =============================================================== -->

<!-- FIXME (SM): this is hardcoding. Find a better way of doing this
     possibly using public identifiers of ISO latin char sets -->
<!ENTITY % charEntity SYSTEM "characters.ent">
%charEntity;




<!-- =============================================================== -->
<!-- Userful entitieis for increased DTD readability -->
<!-- =============================================================== -->

<!ENTITY % text "#PCDATA">


<!-- =============================================================== -->
<!-- Entities for general XML compliance -->
<!-- =============================================================== -->

<!-- Common attributes
        Every element has an ID attribute (sometimes required,
        but usually optional) for links, and a Role attribute
        for extending the useful life of the DTD by allowing
        authors to make subclasses for any element. %common.att;
        is for common attributes where the ID is optional, and
        %common-idreq.att; is for common attributes where the
        ID is required.
-->
<!ENTITY % common.att
        'id                     ID              #IMPLIED
         xml:lang               NMTOKEN         #IMPLIED
         role                   NMTOKEN         #IMPLIED'>
<!ENTITY % common-idreq.att
        'id                     ID              #REQUIRED
         xml:lang               NMTOKEN         #IMPLIED
         role                   NMTOKEN         #IMPLIED'>


<!-- xml:space attribute ===============================================
        Indicates that the element contains white space
        that the formatter or other application should retain,
        as appropriate to its function.
==================================================================== -->
<!ENTITY % xmlspace.att
        'xml:space (default|preserve) #FIXED "preserve"'>


<!-- def attribute =====================================================
        Points to the element where the relevant definition can be
        found, using the IDREF mechanism.  %def.att; is for optional
        def attributes, and %def-req.att; is for required def
        attributes.
==================================================================== -->
<!ENTITY % def.att
        'def                    IDREF           #IMPLIED'>
<!ENTITY % def-req.att
        'def                    IDREF           #REQUIRED'>



<!-- ref attribute =====================================================
        Points to the element where more information can be found,
        using the IDREF mechanism.  %ref.att; is for optional
        ref attributes, and %ref-req.att; is for required ref
        attributes.
================================================================== -->
<!ENTITY % ref.att
        'ref                    IDREF           #IMPLIED'>
<!ENTITY % ref-req.att
        'ref                    IDREF           #REQUIRED'>


<!-- =============================================================== -->
<!-- Entities for XLink compliance -->
<!-- =============================================================== -->

<!ENTITY % xlink-simple.att
        'type      (simple|extended|locator|arc) #FIXED "simple"
         href      CDATA                         #IMPLIED
         role      CDATA                         #IMPLIED
         title     CDATA                         #IMPLIED '>
<!--    'xmlns     CDATA                         #FIXED "http://www.w3.org/XML/XLink/0.9" -->
<!-- FIXME: brain-dead IE5 has broken support for
     namespace validation and since I use it for editing
     I remove this for now -->

<!ENTITY % xlink-user-replace.att
        'show      (new|parsed|replace)   #FIXED "replace"
         actuate   (user|auto)            #FIXED "user" '>

<!ENTITY % xlink-user-new.att
        'show      (new|parsed|replace)   #FIXED "new"
         actuate   (user|auto)            #FIXED "user" '>

<!ENTITY % xlink-auto-parsed.att
        'show      (new|parsed|replace)   #FIXED "parsed"
         actuate   (user|auto)            #FIXED "auto" '>

<!-- FIXME (SM): XLink doesn't yet cover the idea of soft links so
     introducing it here using the same namespace is _somewhat_
     illegal. Should we create it own namespace?
-->
<!ENTITY % xlink-soft.att
        'mode      (hard|soft)            #FIXED "soft" '>


<!-- =============================================================== -->
<!-- Entities for general usage -->
<!-- =============================================================== -->


<!-- Key attribute =====================================================
        Optionally provides a sorting or indexing key, for cases when
        the element content is inappropriate for this purpose.
==================================================================== -->
<!ENTITY % key.att
        'key                    CDATA           #IMPLIED'>



<!-- Title attributes ==================================================
        Indicates that the element requires to have a title.
==================================================================== -->
<!ENTITY % title.att
        'title                  CDATA           #REQUIRED'>



<!-- Name attributes ==================================================
        Indicates that the element requires to have a name.
==================================================================== -->
<!ENTITY % name.att
        'name                   CDATA           #REQUIRED'>



<!-- Email attributes ==================================================
        Indicates that the element requires to have an email.
==================================================================== -->
<!ENTITY % email.att
        'email                  CDATA           #REQUIRED'>





<!-- =============================================================== -->
<!-- General definitions -->
<!-- =============================================================== -->

<!-- A person is a general human entity -->
<!ELEMENT person EMPTY>
<!ATTLIST person %common.att;
                 %name.att;
                 %email.att;>




<!-- =============================================================== -->
<!-- Content definitions -->
<!-- =============================================================== -->

<!ENTITY % local.content.mix "">

<!ENTITY % markup "strong|em|code|sub|sup">

<!ENTITY % links "link|connect|jump|fork|anchor">

<!ENTITY % special "br|img">

<!ENTITY % link-content.mix "%text;|%markup;|%special;%local.content.mix;">

<!ENTITY % content.mix "%link-content.mix;|%links;">

    <!-- ==================================================== -->
    <!-- Phrase Markup -->
    <!-- ==================================================== -->

    <!-- Strong (typically bold) -->
    <!ELEMENT strong (%text;)>
    <!ATTLIST strong %common.att;>

    <!-- Emphasis (typically italic) -->
    <!ELEMENT em (%text;)>
    <!ATTLIST em %common.att;>

    <!-- Code (typically monospaced) -->
    <!ELEMENT code (%text;)>
    <!ATTLIST code %common.att;>

    <!-- Superscript (typically smaller and higher) -->
    <!ELEMENT sup (%text;)>
    <!ATTLIST sup %common.att;>

    <!-- Subscript (typically smaller and lower) -->
    <!ELEMENT sub (%text;)>
    <!ATTLIST sub %common.att;>

    <!-- FIXME (SM): should we add these HTML 4.0 markups
         which are style-free?

          -dfn
          -samp
          -kbd
          -var
          -cite
          -abbr
          -acronym

     -->

    <!-- ==================================================== -->
    <!-- Hypertextual Links -->
    <!-- ==================================================== -->

    <!-- hard replacing link (equivalent of <a ...>) -->
    <!ELEMENT link (%link-content.mix;)*>
    <!ATTLIST link %common.att;
                   %xlink-simple.att;
                   %xlink-user-replace.att;>

    <!-- Hard window replacing link (equivalent of <a ... target="_top">) -->
    <!ELEMENT jump (%link-content.mix;)*>
    <!ATTLIST jump %common.att;
                   %xlink-simple.att;
                   %xlink-user-new.att;>

    <!-- Hard window forking link (equivalent of <a ... target="_new">) -->
    <!ELEMENT fork (%link-content.mix;)*>
    <!ATTLIST fork %common.att;
                   %xlink-simple.att;
                   %xlink-user-new.att;>

    <!-- Anchor point (equivalent of <a name="...">) -->
    <!ELEMENT anchor EMPTY>
    <!ATTLIST anchor %common-idreq.att;>

    <!-- Soft link between processed pages (no equivalent in HTML) -->
    <!ELEMENT connect (%link-content.mix;)*>
    <!ATTLIST connect %common.att;
                      %xlink-simple.att;
                      %xlink-user-replace.att;
                      %xlink-soft.att;>

    <!-- ==================================================== -->
    <!-- Specials -->
    <!-- ==================================================== -->

    <!-- Breakline Object (typically forces line break) -->
    <!ELEMENT br EMPTY>
    <!ATTLIST br %common.att;>

    <!-- Image Object (typically an inlined image) -->
    <!-- FIXME (SM): should we have the notion of soft links even here
         for inlined objects? -->
    <!ELEMENT img EMPTY>
    <!ATTLIST img src    CDATA  #REQUIRED
                  alt    CDATA  #REQUIRED
                  height CDATA  #IMPLIED
                  width  CDATA  #IMPLIED
                  usemap CDATA  #IMPLIED
                  ismap  (ismap) #IMPLIED
                  %common.att;>






<!-- =============================================================== -->
<!-- Blocks definitions -->
<!-- =============================================================== -->

<!ENTITY % local.blocks "">

<!ENTITY % local.lists "">

<!ENTITY % paragraphs "p|source|note|fixme|img-block">

<!ENTITY % tables "table">

<!ENTITY % lists "ol|ul|sl|dl %local.lists;">

<!ENTITY % blocks "%paragraphs;|%tables;|%lists; %local.blocks;">

    <!-- ==================================================== -->
    <!-- Paragraphs -->
    <!-- ==================================================== -->

    <!-- Text Paragraph (normally vertically space delimited) -->
    <!ELEMENT p (%content.mix;)*>
    <!ATTLIST p %common.att;>

    <!-- Source Paragraph (normally space is preserved) -->
    <!ELEMENT source (%content.mix;)*>
    <!ATTLIST source %common.att;
                     %xmlspace.att;>

    <!-- Note Paragraph (normally shown encapsulated) -->
    <!ELEMENT note (%content.mix;)*>
    <!ATTLIST note %common.att;>

    <!-- Fixme Paragraph (normally not shown) -->
    <!ELEMENT fixme (%content.mix;)*>
    <!-- the "author" attribute should match the "key" attribute of the
         <author> element -->
    <!ATTLIST fixme author CDATA #REQUIRED
                    %common.att;>

    <!-- ==================================================== -->
    <!-- Tables -->
    <!-- ==================================================== -->

    <!ENTITY % cellhalign.att
            'align          (left|center
                            |right|justify
                            |char)          #IMPLIED
            char            CDATA           #IMPLIED
            charoff         CDATA           #IMPLIED'>

    <!ENTITY % cellvalign.att
            'valign         (top|middle
                            |bottom
                            |baseline)      #IMPLIED'>

    <!ENTITY % thtd.att
            'abbr           CDATA           #IMPLIED
            axis            CDATA           #IMPLIED
            headers         IDREFS          #IMPLIED
            scope           (row
                            |col
                            |rowgroup
                            |colgroup)      #IMPLIED
            rowspan         NMTOKEN         "1"
            colspan         NMTOKEN         "1"'>

    <!ENTITY % width.att
            'width          CDATA           #IMPLIED'>

    <!ENTITY % span.att
            'span           NMTOKEN         "1"'>



    <!-- Table (based on the IETF HTML table standard [RFC1942]) -->
    <!ELEMENT table
            (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
    <!ATTLIST table
            %common.att;
            %width.att;
            summary         CDATA           #IMPLIED
            border          CDATA           #IMPLIED
            frame           (void|above
                            |below|hsides
                            |lhs|rhs
                            |vsides|box
                            |border)        #IMPLIED
            rules           (none|groups
                            |rows|cols
                            |all)           #IMPLIED
            cellspacing     CDATA           #IMPLIED
            cellpadding     CDATA           #IMPLIED>

        <!ELEMENT caption (%content.mix;)*>
        <!ATTLIST caption %common.att;>

        <!ELEMENT colgroup (col)*>
        <!ATTLIST colgroup
                %common.att;
                %span.att;
                %width.att;
                %cellhalign.att;
                %cellvalign.att;>

            <!ELEMENT col EMPTY>
            <!ATTLIST col
                    %common.att;
                    %span.att;
                    %width.att;
                    %cellhalign.att;
                    %cellvalign.att;>

        <!ELEMENT thead (tr)+>
        <!ATTLIST thead
                %common.att;
                %cellhalign.att;
                %cellvalign.att;>

        <!ELEMENT tfoot (tr)+>
        <!ATTLIST tfoot
                %common.att;
                %cellhalign.att;
                %cellvalign.att;>

        <!ELEMENT tbody (tr)+>
        <!ATTLIST tbody
                %common.att;
                %cellhalign.att;
                %cellvalign.att;>

            <!ELEMENT tr (th|td)+>
            <!ATTLIST tr
                    %common.att;
                    %cellhalign.att;
                    %cellvalign.att;>

                <!ELEMENT th (%content.mix;)*>
                <!ATTLIST th
                        %common.att;
                        %thtd.att;
                        %cellhalign.att;
                        %cellvalign.att;>

                <!ELEMENT td (%content.mix;)*>
                <!ATTLIST td
                        %common.att;
                        %thtd.att;
                        %cellhalign.att;
                        %cellvalign.att;>

    <!-- ==================================================== -->
    <!-- Lists -->
    <!-- ==================================================== -->

    <!-- Unordered list (typically bulleted) -->
    <!ELEMENT ul (li|%lists;)+>
    <!--    spacing attribute:
            Use "normal" to get normal vertical spacing for items;
            use "compact" to get less spacing.  The default is dependent
            on the stylesheet. -->
    <!ATTLIST ul
            %common.att;
            spacing         (normal|compact)        #IMPLIED>

    <!-- Ordered list (typically numbered) -->
    <!ELEMENT ol (li|%lists;)+>
    <!--    spacing attribute:
            Use "normal" to get normal vertical spacing for items;
            use "compact" to get less spacing.  The default is dependent
            on the stylesheet. -->
    <!ATTLIST ol
            %common.att;
            spacing         (normal|compact)        #IMPLIED>

    <!-- Simple list (typically with no mark) -->
    <!ELEMENT sl (li|%lists;)+>
    <!ATTLIST sl %common.att;>

        <!-- List item -->
        <!ELEMENT li (%content.mix;|%lists;)*>
        <!ATTLIST li %common.att;>

    <!-- Definition list (typically two-column) -->
    <!ELEMENT dl (dt,dd)+>
    <!ATTLIST dl %common.att;>

        <!-- Definition term -->
        <!ELEMENT dt (%content.mix;)*>
        <!ATTLIST dt %common.att;>

        <!-- Definition description -->
        <!ELEMENT dd (%content.mix;)*>
        <!ATTLIST dd %common.att;>

    <!-- ==================================================== -->
    <!-- Special Blocks -->
    <!-- ==================================================== -->

    <!-- Image Block (typically a separated and centered image) -->
    <!-- FIXME (SM): should we have the notion of soft links even here
         for inlined objects? -->
    <!ELEMENT img-block EMPTY>
    <!ATTLIST img-block src    CDATA  #REQUIRED
                        alt    CDATA  #REQUIRED
                        height CDATA  #IMPLIED
                        width  CDATA  #IMPLIED
                        usemap CDATA  #IMPLIED
                        ismap  (ismap) #IMPLIED
                        %common.att;>





<!-- =============================================================== -->
<!-- Document -->
<!-- =============================================================== -->

<!ELEMENT document (header?, body, footer?)>
<!ATTLIST document %common.att;>

    <!-- ==================================================== -->
    <!-- Header -->
    <!-- ==================================================== -->

    <!ENTITY % local.headers "">

    <!ELEMENT header (title, subtitle?, version?, type?, authors,
                      notice*, abstract? %local.headers;)>
    <!ATTLIST header %common.att;>

    <!ELEMENT title (%text;)>
    <!ATTLIST title %common.att;>

    <!ELEMENT subtitle (%text;)>
    <!ATTLIST subtitle %common.att;>

    <!ELEMENT version (%text;)>
    <!ATTLIST version %common.att;>

    <!ELEMENT type (%text;)>
    <!ATTLIST type %common.att;>

    <!ELEMENT authors (person+)>
    <!ATTLIST authors %common.att;>

    <!ELEMENT notice (%content.mix;)*>
    <!ATTLIST notice %common.att;>

    <!ELEMENT abstract (%content.mix;)*>
    <!ATTLIST abstract %common.att;>

    <!-- ==================================================== -->
    <!-- Body -->
    <!-- ==================================================== -->

    <!ENTITY % local.sections "">

    <!ENTITY % sections "s1 %local.sections;">

    <!ELEMENT body (%sections;)+>
    <!ATTLIST body %common.att;>

        <!ELEMENT s1 (s2|%blocks;)*>
        <!ATTLIST s1 %title.att; %common.att;>

            <!ELEMENT s2 (s3|%blocks;)*>
            <!ATTLIST s2 %title.att; %common.att;>

                <!ELEMENT s3 (s4|%blocks;)*>
                <!ATTLIST s3 %title.att; %common.att;>

                    <!ELEMENT s4 (%blocks;)*>
                    <!ATTLIST s4 %title.att; %common.att;>

    <!-- ==================================================== -->
    <!-- Footer -->
    <!-- ==================================================== -->

    <!ENTITY % local.footers "">

    <!ELEMENT footer (legal %local.footers;)>

        <!ELEMENT legal (%content.mix;)*>
        <!ATTLIST legal %common.att;>

<!-- =============================================================== -->
<!-- End of DTD -->
<!-- =============================================================== -->
<!-- 
     Portions (C) International Organization for Standardization 1986
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.
-->

<!-- 
     Character entity set.
-->

<!-- Latin A -->
<!ENTITY nbsp     "&#160;">  <!-- U+00A0 ISOnum    - no-break space = non-breaking space                                   -->
<!ENTITY iexcl    "&#161;">  <!-- U+00A1 ISOnum    - inverted exclamation mark                                             -->
<!ENTITY cent     "&#162;">  <!-- U+00A2 ISOnum    - cent sign                                                             -->
<!ENTITY pound    "&#163;">  <!-- U+00A3 ISOnum    - pound sign                                                            -->
<!ENTITY curren   "&#164;">  <!-- U+00A4 ISOnum    - currency sign                                                         -->
<!ENTITY yen      "&#165;">  <!-- U+00A5 ISOnum    - yen sign = yuan sign                                                  -->
<!ENTITY brvbar   "&#166;">  <!-- U+00A6 ISOnum    - broken bar = broken vertical bar                                      -->
<!ENTITY sect     "&#167;">  <!-- U+00A7 ISOnum    - section sign                                                          -->
<!ENTITY uml      "&#168;">  <!-- U+00A8 ISOdia    - diaeresis = spacing diaeresis                                         -->
<!ENTITY copy     "&#169;">  <!-- U+00A9 ISOnum    - copyright sign                                                        -->
<!ENTITY ordf     "&#170;">  <!-- U+00AA ISOnum    - feminine ordinal indicator                                            -->
<!ENTITY laquo    "&#171;">  <!-- U+00AB ISOnum    - left-pointing double angle quotation mark = left pointing guillemet   -->
<!ENTITY not      "&#172;">  <!-- U+00AC ISOnum    - not sign                                                              -->
<!ENTITY shy      "&#173;">  <!-- U+00AD ISOnum    - soft hyphen = discretionary hyphen                                    -->
<!ENTITY reg      "&#174;">  <!-- U+00AE ISOnum    - registered sign = registered trade mark sign                          -->
<!ENTITY macr     "&#175;">  <!-- U+00AF ISOdia    - macron = spacing macron = overline = APL overbar                      -->
<!ENTITY deg      "&#176;">  <!-- U+00B0 ISOnum    - degree sign                                                           -->
<!ENTITY plusmn   "&#177;">  <!-- U+00B1 ISOnum    - plus-minus sign = plus-or-minus sign                                  -->
<!ENTITY sup2     "&#178;">  <!-- U+00B2 ISOnum    - superscript two = superscript digit two = squared                     -->
<!ENTITY sup3     "&#179;">  <!-- U+00B3 ISOnum    - superscript three = superscript digit three = cubed                   -->
<!ENTITY acute    "&#180;">  <!-- U+00B4 ISOdia    - acute accent = spacing acute                                          -->
<!ENTITY micro    "&#181;">  <!-- U+00B5 ISOnum    - micro sign                                                            -->
<!ENTITY para     "&#182;">  <!-- U+00B6 ISOnum    - pilcrow sign = paragraph sign                                         -->
<!ENTITY middot   "&#183;">  <!-- U+00B7 ISOnum    - middle dot = Georgian comma = Greek middle dot                        -->
<!ENTITY cedil    "&#184;">  <!-- U+00B8 ISOdia    - cedilla = spacing cedilla                                             -->
<!ENTITY sup1     "&#185;">  <!-- U+00B9 ISOnum    - superscript one = superscript digit one                               -->
<!ENTITY ordm     "&#186;">  <!-- U+00BA ISOnum    - masculine ordinal indicator                                           -->
<!ENTITY raquo    "&#187;">  <!-- U+00BB ISOnum    - right-pointing double angle quotation mark = right pointing guillemet -->
<!ENTITY frac14   "&#188;">  <!-- U+00BC ISOnum    - vulgar fraction one quarter = fraction one quarter                    -->
<!ENTITY frac12   "&#189;">  <!-- U+00BD ISOnum    - vulgar fraction one half = fraction one half                          -->
<!ENTITY frac34   "&#190;">  <!-- U+00BE ISOnum    - vulgar fraction three quarters = fraction three quarters              -->
<!ENTITY iquest   "&#191;">  <!-- U+00BF ISOnum    - inverted question mark = turned question mark                         -->
<!ENTITY Agrave   "&#192;">  <!-- U+00C0 ISOlat1   - latin capital letter A with grave = latin capital letter A grave      -->
<!ENTITY Aacute   "&#193;">  <!-- U+00C1 ISOlat1   - latin capital letter A with acute                                     -->
<!ENTITY Acirc    "&#194;">  <!-- U+00C2 ISOlat1   - latin capital letter A with circumflex                                -->
<!ENTITY Atilde   "&#195;">  <!-- U+00C3 ISOlat1   - latin capital letter A with tilde                                     -->
<!ENTITY Auml     "&#196;">  <!-- U+00C4 ISOlat1   - latin capital letter A with diaeresis                                 -->
<!ENTITY Aring    "&#197;">  <!-- U+00C5 ISOlat1   - latin capital letter A with ring above = latin capital letter A ring  -->
<!ENTITY AElig    "&#198;">  <!-- U+00C6 ISOlat1   - latin capital letter AE = latin capital ligature AE                   -->
<!ENTITY Ccedil   "&#199;">  <!-- U+00C7 ISOlat1   - latin capital letter C with cedilla                                   -->
<!ENTITY Egrave   "&#200;">  <!-- U+00C8 ISOlat1   - latin capital letter E with grave                                     -->
<!ENTITY Eacute   "&#201;">  <!-- U+00C9 ISOlat1   - latin capital letter E with acute                                     -->
<!ENTITY Ecirc    "&#202;">  <!-- U+00CA ISOlat1   - latin capital letter E with circumflex                                -->
<!ENTITY Euml     "&#203;">  <!-- U+00CB ISOlat1   - latin capital letter E with diaeresis                                 -->
<!ENTITY Igrave   "&#204;">  <!-- U+00CC ISOlat1   - latin capital letter I with grave                                     -->
<!ENTITY Iacute   "&#205;">  <!-- U+00CD ISOlat1   - latin capital letter I with acute                                     -->
<!ENTITY Icirc    "&#206;">  <!-- U+00CE ISOlat1   - latin capital letter I with circumflex                                -->
<!ENTITY Iuml     "&#207;">  <!-- U+00CF ISOlat1   - latin capital letter I with diaeresis                                 -->
<!ENTITY ETH      "&#208;">  <!-- U+00D0 ISOlat1   - latin capital letter ETH                                              -->
<!ENTITY Ntilde   "&#209;">  <!-- U+00D1 ISOlat1   - latin capital letter N with tilde                                     -->
<!ENTITY Ograve   "&#210;">  <!-- U+00D2 ISOlat1   - latin capital letter O with grave                                     -->
<!ENTITY Oacute   "&#211;">  <!-- U+00D3 ISOlat1   - latin capital letter O with acute                                     -->
<!ENTITY Ocirc    "&#212;">  <!-- U+00D4 ISOlat1   - latin capital letter O with circumflex                                -->
<!ENTITY Otilde   "&#213;">  <!-- U+00D5 ISOlat1   - latin capital letter O with tilde                                     -->
<!ENTITY Ouml     "&#214;">  <!-- U+00D6 ISOlat1   - latin capital letter O with diaeresis                                 -->
<!ENTITY times    "&#215;">  <!-- U+00D7 ISOnum    - multiplication sign                                                   -->
<!ENTITY Oslash   "&#216;">  <!-- U+00D8 ISOlat1   - latin capital letter O with stroke = latin capital letter O slash     -->
<!ENTITY Ugrave   "&#217;">  <!-- U+00D9 ISOlat1   - latin capital letter U with grave                                     -->
<!ENTITY Uacute   "&#218;">  <!-- U+00DA ISOlat1   - latin capital letter U with acute                                     -->
<!ENTITY Ucirc    "&#219;">  <!-- U+00DB ISOlat1   - latin capital letter U with circumflex                                -->
<!ENTITY Uuml     "&#220;">  <!-- U+00DC ISOlat1   - latin capital letter U with diaeresis                                 -->
<!ENTITY Yacute   "&#221;">  <!-- U+00DD ISOlat1   - latin capital letter Y with acute                                     -->
<!ENTITY THORN    "&#222;">  <!-- U+00DE ISOlat1   - latin capital letter THORN                                            -->
<!ENTITY szlig    "&#223;">  <!-- U+00DF ISOlat1   - latin small letter sharp s = ess-zed                                  -->
<!ENTITY agrave   "&#224;">  <!-- U+00E0 ISOlat1   - latin small letter a with grave = latin small letter a grave          -->
<!ENTITY aacute   "&#225;">  <!-- U+00E1 ISOlat1   - latin small letter a with acute                                       -->
<!ENTITY acirc    "&#226;">  <!-- U+00E2 ISOlat1   - latin small letter a with circumflex                                  -->
<!ENTITY atilde   "&#227;">  <!-- U+00E3 ISOlat1   - latin small letter a with tilde                                       -->
<!ENTITY auml     "&#228;">  <!-- U+00E4 ISOlat1   - latin small letter a with diaeresis                                   -->
<!ENTITY aring    "&#229;">  <!-- U+00E5 ISOlat1   - latin small letter a with ring above = latin small letter a ring      -->
<!ENTITY aelig    "&#230;">  <!-- U+00E6 ISOlat1   - latin small letter ae = latin small ligature ae                       -->
<!ENTITY ccedil   "&#231;">  <!-- U+00E7 ISOlat1   - latin small letter c with cedilla                                     -->
<!ENTITY egrave   "&#232;">  <!-- U+00E8 ISOlat1   - latin small letter e with grave                                       -->
<!ENTITY eacute   "&#233;">  <!-- U+00E9 ISOlat1   - latin small letter e with acute                                       -->
<!ENTITY ecirc    "&#234;">  <!-- U+00EA ISOlat1   - latin small letter e with circumflex                                  -->
<!ENTITY euml     "&#235;">  <!-- U+00EB ISOlat1   - latin small letter e with diaeresis                                   -->
<!ENTITY igrave   "&#236;">  <!-- U+00EC ISOlat1   - latin small letter i with grave                                       -->
<!ENTITY iacute   "&#237;">  <!-- U+00ED ISOlat1   - latin small letter i with acute                                       -->
<!ENTITY icirc    "&#238;">  <!-- U+00EE ISOlat1   - latin small letter i with circumflex                                  -->
<!ENTITY iuml     "&#239;">  <!-- U+00EF ISOlat1   - latin small letter i with diaeresis                                   -->
<!ENTITY eth      "&#240;">  <!-- U+00F0 ISOlat1   - latin small letter eth                                                -->
<!ENTITY ntilde   "&#241;">  <!-- U+00F1 ISOlat1   - latin small letter n with tilde                                       -->
<!ENTITY ograve   "&#242;">  <!-- U+00F2 ISOlat1   - latin small letter o with grave                                       -->
<!ENTITY oacute   "&#243;">  <!-- U+00F3 ISOlat1   - latin small letter o with acute                                       -->
<!ENTITY ocirc    "&#244;">  <!-- U+00F4 ISOlat1   - latin small letter o with circumflex                                  -->
<!ENTITY otilde   "&#245;">  <!-- U+00F5 ISOlat1   - latin small letter o with tilde                                       -->
<!ENTITY ouml     "&#246;">  <!-- U+00F6 ISOlat1   - latin small letter o with diaeresis                                   -->
<!ENTITY divide   "&#247;">  <!-- U+00F7 ISOnum    - division sign                                                         -->
<!ENTITY oslash   "&#248;">  <!-- U+00F8 ISOlat1   - latin small letter o with stroke = latin small letter o slash         -->
<!ENTITY ugrave   "&#249;">  <!-- U+00F9 ISOlat1   - latin small letter u with grave                                       -->
<!ENTITY uacute   "&#250;">  <!-- U+00FA ISOlat1   - latin small letter u with acute                                       -->
<!ENTITY ucirc    "&#251;">  <!-- U+00FB ISOlat1   - latin small letter u with circumflex                                  -->
<!ENTITY uuml     "&#252;">  <!-- U+00FC ISOlat1   - latin small letter u with diaeresis                                   -->
<!ENTITY yacute   "&#253;">  <!-- U+00FD ISOlat1   - latin small letter y with acute                                       -->
<!ENTITY thorn    "&#254;">  <!-- U+00FE ISOlat1   - latin small letter thorn                                              -->
<!ENTITY yuml     "&#255;">  <!-- U+00FF ISOlat1   - latin small letter y with diaeresis                                   -->

<!-- Latin Extended-A -->
<!ENTITY OElig    "&#338;">  <!-- U+0152 ISOlat2   - latin capital ligature OE                                             -->
<!ENTITY oelig    "&#339;">  <!-- U+0153 ISOlat2   - latin small ligature oe                                               -->

<!-- ligature is a misnomer, this is a separate character in some languages -->
<!ENTITY Scaron   "&#352;">  <!-- U+0160 ISOlat2   - latin capital letter S with caron                                     -->
<!ENTITY scaron   "&#353;">  <!-- U+0161 ISOlat2   - latin small letter s with caron                                       -->
<!ENTITY Yuml     "&#376;">  <!-- U+0178 ISOlat2   - latin capital letter Y with diaeresis                                 -->

<!-- Spacing Modifier Letters -->
<!ENTITY circ     "&#710;">  <!-- U+02C6 ISOpub    - modifier letter circumflex accent                                     -->
<!ENTITY tilde    "&#732;">  <!-- U+02DC ISOdia    - small tilde                                                           -->

<!-- General Punctuation -->
<!ENTITY ensp     "&#8194;"> <!-- U+2002 ISOpub    - en space                                                              -->
<!ENTITY emsp     "&#8195;"> <!-- U+2003 ISOpub    - em space                                                              -->
<!ENTITY thinsp   "&#8201;"> <!-- U+2009 ISOpub    - thin space                                                            -->
<!ENTITY zwnj     "&#8204;"> <!-- U+200C RFC 2070  - zero width non-joiner                                                 -->
<!ENTITY zwj      "&#8205;"> <!-- U+200D RFC 2070  - zero width joiner                                                     -->
<!ENTITY lrm      "&#8206;"> <!-- U+200E RFC 2070  - left-to-right mark                                                    -->
<!ENTITY rlm      "&#8207;"> <!-- U+200F RFC 2070  - right-to-left mark                                                    -->
<!ENTITY ndash    "&#8211;"> <!-- U+2013 ISOpub    - en dash                                                               -->
<!ENTITY mdash    "&#8212;"> <!-- U+2014 ISOpub    - em dash                                                               -->
<!ENTITY lsquo    "&#8216;"> <!-- U+2018 ISOnum    - left single quotation mark                                            -->
<!ENTITY rsquo    "&#8217;"> <!-- U+2019 ISOnum    - right single quotation mark                                           -->
<!ENTITY sbquo    "&#8218;"> <!-- U+201A NEW       - single low-9 quotation mark                                           -->
<!ENTITY ldquo    "&#8220;"> <!-- U+201C ISOnum    - left double quotation mark                                            -->
<!ENTITY rdquo    "&#8221;"> <!-- U+201D ISOnum    - right double quotation mark,                                          -->
<!ENTITY bdquo    "&#8222;"> <!-- U+201E NEW       - double low-9 quotation mark                                           -->
<!ENTITY dagger   "&#8224;"> <!-- U+2020 ISOpub    - dagger                                                                -->
<!ENTITY Dagger   "&#8225;"> <!-- U+2021 ISOpub    - double dagger                                                         -->
<!ENTITY permil   "&#8240;"> <!-- U+2030 ISOtech   - per mille sign                                                        -->
<!ENTITY lsaquo   "&#8249;"> <!-- U+2039 ISO prop. - single left-pointing angle quotation mark                             -->

<!-- lsaquo is proposed but not yet ISO standardized -->
<!ENTITY rsaquo   "&#8250;"> <!-- U+203A ISO prop. -   single right-pointing angle quotation mark                          -->

<!-- rsaquo is proposed but not yet ISO standardized -->
<!ENTITY euro     "&#8364;"> <!-- U+20AC NEW       -   euro sign                                                           -->

<!-- Latin Extended-B -->
<!ENTITY fnof     "&#402;">  <!-- U+0192 ISOtech   - latin small f with hook = function = florin                           -->

<!-- Greek -->
<!ENTITY Alpha    "&#913;">  <!-- U+0391           - greek capital letter alpha                                            -->
<!ENTITY Beta     "&#914;">  <!-- U+0392           - greek capital letter beta                                             -->
<!ENTITY Gamma    "&#915;">  <!-- U+0393 ISOgrk3   - greek capital letter gamma                                            -->
<!ENTITY Delta    "&#916;">  <!-- U+0394 ISOgrk3   - greek capital letter delta                                            -->
<!ENTITY Epsilon  "&#917;">  <!-- U+0395           - greek capital letter epsilon                                          -->
<!ENTITY Zeta     "&#918;">  <!-- U+0396           - greek capital letter zeta                                             -->
<!ENTITY Eta      "&#919;">  <!-- U+0397           - greek capital letter eta                                              -->
<!ENTITY Theta    "&#920;">  <!-- U+0398 ISOgrk3   - greek capital letter theta                                            -->
<!ENTITY Iota     "&#921;">  <!-- U+0399           - greek capital letter iota                                             -->
<!ENTITY Kappa    "&#922;">  <!-- U+039A           - greek capital letter kappa                                            -->
<!ENTITY Lambda   "&#923;">  <!-- U+039B ISOgrk3   - greek capital letter lambda                                           -->
<!ENTITY Mu       "&#924;">  <!-- U+039C           - greek capital letter mu                                               -->
<!ENTITY Nu       "&#925;">  <!-- U+039D           - greek capital letter nu                                               -->
<!ENTITY Xi       "&#926;">  <!-- U+039E ISOgrk3   - greek capital letter xi                                               -->
<!ENTITY Omicron  "&#927;">  <!-- U+039F           - greek capital letter omicron                                          -->
<!ENTITY Pi       "&#928;">  <!-- U+03A0 ISOgrk3   - greek capital letter pi                                               -->
<!ENTITY Rho      "&#929;">  <!-- U+03A1           - greek capital letter rho                                              -->
<!ENTITY Sigma    "&#931;">  <!-- U+03A3 ISOgrk3   - greek capital letter sigma                                            -->
<!ENTITY Tau      "&#932;">  <!-- U+03A4           - greek capital letter tau                                              -->
<!ENTITY Upsilon  "&#933;">  <!-- U+03A5 ISOgrk3   - greek capital letter upsilon                                          -->
<!ENTITY Phi      "&#934;">  <!-- U+03A6 ISOgrk3   - greek capital letter phi                                              -->
<!ENTITY Chi      "&#935;">  <!-- U+03A7           - greek capital letter chi                                              -->
<!ENTITY Psi      "&#936;">  <!-- U+03A8 ISOgrk3   - greek capital letter psi                                              -->
<!ENTITY Omega    "&#937;">  <!-- U+03A9 ISOgrk3   - greek capital letter omega                                            -->
<!ENTITY alpha    "&#945;">  <!-- U+03B1 ISOgrk3   - greek small letter alpha                                              -->
<!ENTITY beta     "&#946;">  <!-- U+03B2 ISOgrk3   - greek small letter beta                                               -->
<!ENTITY gamma    "&#947;">  <!-- U+03B3 ISOgrk3   - greek small letter gamma                                              -->
<!ENTITY delta    "&#948;">  <!-- U+03B4 ISOgrk3   - greek small letter delta                                              -->
<!ENTITY epsilon  "&#949;">  <!-- U+03B5 ISOgrk3   - greek small letter epsilon                                            -->
<!ENTITY zeta     "&#950;">  <!-- U+03B6 ISOgrk3   - greek small letter zeta                                               -->
<!ENTITY eta      "&#951;">  <!-- U+03B7 ISOgrk3   - greek small letter eta                                                -->
<!ENTITY theta    "&#952;">  <!-- U+03B8 ISOgrk3   - greek small letter theta                                              -->
<!ENTITY iota     "&#953;">  <!-- U+03B9 ISOgrk3   - greek small letter iota                                               -->
<!ENTITY kappa    "&#954;">  <!-- U+03BA ISOgrk3   - greek small letter kappa                                              -->
<!ENTITY lambda   "&#955;">  <!-- U+03BB ISOgrk3   - greek small letter lambda                                             -->
<!ENTITY mu       "&#956;">  <!-- U+03BC ISOgrk3   - greek small letter mu                                                 -->
<!ENTITY nu       "&#957;">  <!-- U+03BD ISOgrk3   - greek small letter nu                                                 -->
<!ENTITY xi       "&#958;">  <!-- U+03BE ISOgrk3   - greek small letter xi                                                 -->
<!ENTITY omicron  "&#959;">  <!-- U+03BF NEW       - greek small letter omicron                                            -->
<!ENTITY pi       "&#960;">  <!-- U+03C0 ISOgrk3   - greek small letter pi                                                 -->
<!ENTITY rho      "&#961;">  <!-- U+03C1 ISOgrk3   - greek small letter rho                                                -->
<!ENTITY sigmaf   "&#962;">  <!-- U+03C2 ISOgrk3   - greek small letter final sigma                                        -->
<!ENTITY sigma    "&#963;">  <!-- U+03C3 ISOgrk3   - greek small letter sigma                                              -->
<!ENTITY tau      "&#964;">  <!-- U+03C4 ISOgrk3   - greek small letter tau                                                -->
<!ENTITY upsilon  "&#965;">  <!-- U+03C5 ISOgrk3   - greek small letter upsilon                                            -->
<!ENTITY phi      "&#966;">  <!-- U+03C6 ISOgrk3   - greek small letter phi                                                -->
<!ENTITY chi      "&#967;">  <!-- U+03C7 ISOgrk3   - greek small letter chi                                                -->
<!ENTITY psi      "&#968;">  <!-- U+03C8 ISOgrk3   - greek small letter psi                                                -->
<!ENTITY omega    "&#969;">  <!-- U+03C9 ISOgrk3   - greek small letter omega                                              -->
<!ENTITY thetasym "&#977;">  <!-- U+03D1 NEW       - greek small letter theta symbol                                       -->
<!ENTITY upsih    "&#978;">  <!-- U+03D2 NEW       - greek upsilon with hook symbol                                        -->
<!ENTITY piv      "&#982;">  <!-- U+03D6 ISOgrk3   - greek pi symbol                                                       -->

<!-- General Punctuation -->
<!ENTITY bull     "&#8226;"> <!-- U+2022 ISOpub    - bullet = black small circle                                           -->
<!ENTITY hellip   "&#8230;"> <!-- U+2026 ISOpub    - horizontal ellipsis = three dot leader                                -->
<!ENTITY prime    "&#8242;"> <!-- U+2032 ISOtech   - prime = minutes = feet                                                -->
<!ENTITY Prime    "&#8243;"> <!-- U+2033 ISOtech   - double prime = seconds = inches                                       -->
<!ENTITY oline    "&#8254;"> <!-- U+203E NEW       - overline = spacing overscore                                          -->
<!ENTITY frasl    "&#8260;"> <!-- U+2044 NEW       - fraction slash                                                        -->

<!-- Letterlike Symbols -->
<!ENTITY weierp   "&#8472;"> <!-- U+2118 ISOamso   - script capital P = power set = Weierstrass p                          -->
<!ENTITY image    "&#8465;"> <!-- U+2111 ISOamso   - blackletter capital I = imaginary part                                -->
<!ENTITY real     "&#8476;"> <!-- U+211C ISOamso   - blackletter capital R = real part symbol                              -->
<!ENTITY trade    "&#8482;"> <!-- U+2122 ISOnum    - trade mark sign                                                       -->
<!ENTITY alefsym  "&#8501;"> <!-- U+2135 NEW       - alef symbol = first transfinite cardinal                              -->

<!-- Arrows -->
<!ENTITY larr     "&#8592;"> <!-- U+2190 ISOnum    - leftwards arrow                                                       -->
<!ENTITY uarr     "&#8593;"> <!-- U+2191 ISOnum    - upwards arrow                                                         -->
<!ENTITY rarr     "&#8594;"> <!-- U+2192 ISOnum    - rightwards arrow                                                      -->
<!ENTITY darr     "&#8595;"> <!-- U+2193 ISOnum    - downwards arrow                                                       -->
<!ENTITY harr     "&#8596;"> <!-- U+2194 ISOamsa   - left right arrow                                                      -->
<!ENTITY crarr    "&#8629;"> <!-- U+21B5 NEW       - downwards arrow with corner leftwards = carriage return               -->
<!ENTITY lArr     "&#8656;"> <!-- U+21D0 ISOtech   - leftwards double arrow                                                -->
<!ENTITY uArr     "&#8657;"> <!-- U+21D1 ISOamsa   - upwards double arrow                                                  -->
<!ENTITY rArr     "&#8658;"> <!-- U+21D2 ISOtech   - rightwards double arrow                                               -->
<!ENTITY dArr     "&#8659;"> <!-- U+21D3 ISOamsa   - downwards double arrow                                                -->
<!ENTITY hArr     "&#8660;"> <!-- U+21D4 ISOamsa   - left right double arrow                                               -->

<!-- Mathematical Operators -->
<!ENTITY forall   "&#8704;"> <!-- U+2200 ISOtech   - for all                                                               -->
<!ENTITY part     "&#8706;"> <!-- U+2202 ISOtech   - partial differential                                                  -->
<!ENTITY exist    "&#8707;"> <!-- U+2203 ISOtech   - there exists                                                          -->
<!ENTITY empty    "&#8709;"> <!-- U+2205 ISOamso   - empty set = null set = diameter                                       -->
<!ENTITY nabla    "&#8711;"> <!-- U+2207 ISOtech   - nabla = backward difference                                           -->
<!ENTITY isin     "&#8712;"> <!-- U+2208 ISOtech   - element of                                                            -->
<!ENTITY notin    "&#8713;"> <!-- U+2209 ISOtech   - not an element of                                                     -->
<!ENTITY ni       "&#8715;"> <!-- U+220B ISOtech   - contains as member                                                    -->
<!ENTITY prod     "&#8719;"> <!-- U+220F ISOamsb   - n-ary product = product sign                                          -->
<!ENTITY sum      "&#8721;"> <!-- U+2211 ISOamsb   - n-ary sumation                                                        -->
<!ENTITY minus    "&#8722;"> <!-- U+2212 ISOtech   - minus sign                                                            -->
<!ENTITY lowast   "&#8727;"> <!-- U+2217 ISOtech   - asterisk operator                                                     -->
<!ENTITY radic    "&#8730;"> <!-- U+221A ISOtech   - square root = radical sign                                            -->
<!ENTITY prop     "&#8733;"> <!-- U+221D ISOtech   - proportional to                                                       -->
<!ENTITY infin    "&#8734;"> <!-- U+221E ISOtech   - infinity                                                              -->
<!ENTITY ang      "&#8736;"> <!-- U+2220 ISOamso   - angle                                                                 -->
<!ENTITY and      "&#8743;"> <!-- U+2227 ISOtech   - logical and = wedge                                                   -->
<!ENTITY or       "&#8744;"> <!-- U+2228 ISOtech   - logical or = vee                                                      -->
<!ENTITY cap      "&#8745;"> <!-- U+2229 ISOtech   - intersection = cap                                                    -->
<!ENTITY cup      "&#8746;"> <!-- U+222A ISOtech   - union = cup                                                           -->
<!ENTITY int      "&#8747;"> <!-- U+222B ISOtech   - integral                                                              -->
<!ENTITY there4   "&#8756;"> <!-- U+2234 ISOtech   - therefore                                                             -->
<!ENTITY sim      "&#8764;"> <!-- U+223C ISOtech   - tilde operator = varies with = similar to                             -->
<!ENTITY cong     "&#8773;"> <!-- U+2245 ISOtech   - approximately equal to                                                -->
<!ENTITY asymp    "&#8776;"> <!-- U+2248 ISOamsr   - almost equal to = asymptotic to                                       -->
<!ENTITY ne       "&#8800;"> <!-- U+2260 ISOtech   - not equal to                                                          -->
<!ENTITY equiv    "&#8801;"> <!-- U+2261 ISOtech   - identical to                                                          -->
<!ENTITY le       "&#8804;"> <!-- U+2264 ISOtech   - less-than or equal to                                                 -->
<!ENTITY ge       "&#8805;"> <!-- U+2265 ISOtech   - greater-than or equal to                                              -->
<!ENTITY sub      "&#8834;"> <!-- U+2282 ISOtech   - subset of                                                             -->
<!ENTITY sup      "&#8835;"> <!-- U+2283 ISOtech   - superset of                                                           -->
<!ENTITY nsub     "&#8836;"> <!-- U+2284 ISOamsn   - not a subset of                                                       -->
<!ENTITY sube     "&#8838;"> <!-- U+2286 ISOtech   - subset of or equal to                                                 -->
<!ENTITY supe     "&#8839;"> <!-- U+2287 ISOtech   - superset of or equal to                                               -->
<!ENTITY oplus    "&#8853;"> <!-- U+2295 ISOamsb   - circled plus = direct sum                                             -->
<!ENTITY otimes   "&#8855;"> <!-- U+2297 ISOamsb   - circled times = vector product                                        -->
<!ENTITY perp     "&#8869;"> <!-- U+22A5 ISOtech   - up tack = orthogonal to = perpendicular                               -->
<!ENTITY sdot     "&#8901;"> <!-- U+22C5 ISOamsb   - dot operator                                                          -->

<!-- Miscellaneous Technical -->
<!ENTITY lceil    "&#8968;"> <!-- U+2308 ISOamsc   - left ceiling = apl upstile                                            -->
<!ENTITY rceil    "&#8969;"> <!-- U+2309 ISOamsc   - right ceiling                                                         -->
<!ENTITY lfloor   "&#8970;"> <!-- U+230A ISOamsc   - left floor = apl downstile                                            -->
<!ENTITY rfloor   "&#8971;"> <!-- U+230B ISOamsc   - right floor                                                           -->
<!ENTITY lang     "&#9001;"> <!-- U+2329 ISOtech   - left-pointing angle bracket = bra                                     -->
<!ENTITY rang     "&#9002;"> <!-- U+232A ISOtech   - right-pointing angle bracket = ket                                    -->

<!-- Geometric Shapes -->
<!ENTITY loz      "&#9674;"> <!-- U+25CA ISOpub    - lozenge                                                               -->

<!-- Miscellaneous Symbols -->
<!ENTITY spades   "&#9824;"> <!-- U+2660 ISOpub    - black spade suit                                                      -->
<!ENTITY clubs    "&#9827;"> <!-- U+2663 ISOpub    - black club suit = shamrock                                            -->
<!ENTITY hearts   "&#9829;"> <!-- U+2665 ISOpub    - black heart suit = valentine                                          -->
<!ENTITY diams    "&#9830;"> <!-- U+2666 ISOpub    - black diamond suit                                                    -->
Title: Installing Cocoon

Cocoon requires the following systems to be already installed in your system:

  • Java Virtual Machine A Java 1.1 or greater compatible virtual machine must be present for both command line and servlet type usage of Cocoon. Note that all servlet engines require a JVM to run so if you are already using servlets you already have one installed.
  • Servlet Engine A Servlet 2.x compliant servlet engine must be present in order to support servlet operation and dynamic request handling. Note that this requirement is optional for command line operation.

Cocoon is a publishing framework and was designed to be highly modular to allow users to choose their preferred implementation for the required component and to allow better and faster parallel development.

Cocoon uses an XML parser and an XSLT processor has its basic components and uses the DOM API to access work with them. For this reason, you need both DOM-enabled XML parser and XSLT processor. Also, for complex formatting, Cocoon uses a formatting object renderer and a set of printing classes to send the page to the client.

Being an Apache project, Cocoon focues on Apache technologies and comes configured to operate with Xerces, Xalan and FOP, but other DOM-aware components are supported as well (see the cocoon.properties file for more information on other components supported).

For this reason, in order to work out of the box and have complete operation, you need to download all three packages (Xerces-J, Xalan-J and FOP) from the xml.apache.org distribution area. Once you have all three jar packages required and all other packages that may be required by these projects, go ahead and follow the instructions for your servlet engine.

Being Cocoon a servlet, you should be able to install it on every compliant servlet engine by associating the "org.apache.cocoon.Cocoon" servlet with the requests you want it to handle. In order to do this, there is no standard way, so we try to provide detailed information for the most used servlet systems.

Apache JServ has one configuration file for the whole engine (normally called jserv.properties) and one for each servlet zone. Please, refer to the Apache JServ documentation for more information on this.

First thing to do is to make sure that the components needed by Cocoon (and explained in the above paragraphs) are visible. This implies adding this to the servlet engine classpath by adding a line like this in your jserv.properties file for each jar package you have to install after substituting [path-to-jar] with the path to the jar file and [jar-name] with the package file name.

wrapper.classpath=[path-to-jar]/[jar-name].jar

Note: do not add the cocoon.jar package here since this might corrupt it's normal operation. Here, you should add all the required packages but Cocoon itself.

At this point, you must tell the servlet engine to locate Cocoon (since you didn't do this in the step right above!). To do this, you should choose the servlet zone where you want Cocoon to reside. If you don't know what a servlet zone is, you probably want to open the zone.properties file that represents the default servlet zone. Now add the cocoon.jar package to your servlet zone by making sure a line like this is present in your zone property file.

repositories=...,[path-to-cocoon]/bin/cocoon.jar

where ... stands for any other servlet repository the servlet zone already contains (or might be empty if no other repository is used by this zone) and [path-to-cocoon] is substitued by the actual path to the cocoon.jar file.

Now the servlet engine knows where to locate the Cocoon servlet but Cocoon must need to know its configurations to be able to start. To configure Cocoon, you must pass the cocoon.properties file location to the servlet by adding the following to the zone.properties file:

servlet.org.apache.cocoon.Cocoon.initArgs=properties=[path-to-cocoon]/bin/cocoon.properties

Note that you should not need to change anything from the template properties file found in the distribution, but you must edit it for more complex operation. Please refer directly to the file that contains breaf indications and comments on the different configurations, but you don't need to care about that at this point.

Now your cocoon servlet is properly configured, but you should tell Apache to direct any call to an XML file (or any other file you want Cocoon to process) to the Cocoon servlet. To do this, you should add the following line to your mod_jserv.conf or jserv.conf file:

ApJServAction .xml /servlet/org.apache.cocoon.Cocoon

where .xml is the file extention you want to map to the servlet and /servlet/ is the mount point of your servlet zone (and the above is the standard name for servlet mapping for Apache JServ).

Everything should be configured fine. Restart both Apache and Apache JServ and try accessing the samples contained in the distribution to see Cocoon in action.

Yet to be written! Volunteers welcome!

Yet to be written! Volunteers welcome!

Yet to be written! Volunteers welcome!

Cocoon has been reported to be working on these systems:

  • RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.0 + IBM JDK 1.1.8
  • RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.1b3 + IBM JDK 1.1.8
  • RedHat Linux 6.0 + Apache 1.3.9 + Apache JServ 1.0 + Blackdown JDK 1.2pre2
  • RedHat Linux 6.1 + Apache 1.3.9 + JRun 2.3.3 + IBM JRE 1.1.8
  • Windows 98 + Apache 1.3.9 + Apache JServ 1.0 + IBM JDK 1.1.7
  • Windows 98 + Apache 1.3.9 + Apache JServ 1.1b3 + IBM JDK 1.1.7
  • Windows 98 + Apache 1.3.9 + Apache JServ 1.0 + Sun JDK 1.2.2
  • Windows 98 + Apache 1.3.9 + Apache JServ 1.1b3 + Sun JDK 1.2.2
  • Windows 98 + MS Personal Web Server + ServletExec 2.2 + Sun JDK 1.2.1
  • Windows NT 4.0 + IIS 4.0 + ServletExec 2.2 + Sun JDK 1.2.1
  • Windows NT 4.0 + IIS 4.0 + JRun 2.3.3 + Sun JDK 1.2.1
  • MacOS 8.6 + WebSTAR 4.0 + JRun 2.3 + MrJ 2.1.4
  • MacOS 8.6 + WebSTAR 4.0 + ServletExec 2.1 + Mrj 2.1.4
  • SunOS Netria 5.6 + Apache 1.3.9 + Apache JServ 1.1b3 + Sun JDK 1.1.7
  • SCO OpenServer 5 + WebLogic 4.5.1 + SCO JDK 1.1.7A

Note: due to a bug in Blackdown JDK 1.2pre2 for Linux, we suggest you to use green threads instead of the native ones which are much less stable, expecially highly concurrent operations like servlet engines and servlet execution.

Please, submit your feedback if you were able to install Cocoon on a different combination not listed above. Thanks.





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS