SWI-Prolog SGML/XML parser
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • SWI-Prolog SGML/XML parser
        • Introduction
        • Bluffer's Guide
        • Predicate Reference
        • Stream encoding issues
        • library(xpath): Select nodes in an XML DOM
        • Processing Indexed Files
        • External entities
        • library(pwp): Prolog Well-formed Pages
        • Writing markup
        • Unsupported SGML features
        • Acknowledgements

10 Unsupported SGML features

The current parser is rather limited. While it is able to deal with many serious documents, it omits several less-used features of SGML and XML. Known missing SGML features include

  • NOTATION on entities
    Though notation is parsed, notation attributes on external entity declarations are not handed to the user.
  • NOTATION attributes
    SGML notations may have attributes, declared using <!ATTLIST #NOTATION name attributes>. Those data attributes are provided when you declare an external CDATA, NDATA, or SDATA entity.

    XML does not include external CDATA, NDATA, or SDATA entities, nor any of the other uses to which data attributes are put in SGML, so it doesn't include data attributes for notations either.

    Sgml2pl does not support this feature and is unlikely to; you should be aware that SGML documents using this feature cannot be converted faithfully to XML.

  • SHORTTAG
    The SGML SHORTTAG syntax is only partially implemented. Currently, <tag/content/ is a valid abbreviation for <tag>content</tag>, which can also be written as <tag>content</>. Empty start tags (<>), unclosed start tags (<a<b</verb>) and unclosed end tags (<verb></a<b) are not supported.
  • SGML declaration
    The‘SGML declaration' is fixed, though most of the parameters are handled through indirections in the implementation.
  • The DATATAG feature
    It is regarded as superseeded by SHORTREF, which is supported. (SP does not support it either.)
  • The RANK feature
    It is regarded as obsolete.
  • The LINK feature
    It is regarded as too complicated.
  • The CONCUR feature
    Concurrent markup allows a document to be tagged according to more than one DTD at the same time. It is not supported.

In XML mode the parser recognises SGML constructs that are not allowed in XML. Also various extensions of XML over SGML are not yet realised. In particular, XInclude is not implemented because the designers of XInclude can't make up their minds whether to base it on elements or attributes yet, let alone details.