swirl
Guide to OmniMark 7   OmniMark home
docs home 
IndexConceptsTasksSyntaxLibrariesLegacy LibrariesErrors
 
      Other Library Functions  
function  

xerces.xml

 
 

Library: XML and parsing, Xerces XML parser (OMXERCES)
Import: omxerces.xmd

Declaration

  export external markup-parser function xml
           schemas value integer schema-validation-mode
                      optional initial {auto-schema-validation}
           namespaces value integer namespace-processing-mode
                      optional initial {namespace-validation}
           scan value parser-input data


Purpose

The Xerces-Based XML Parser is invoked in a manner similar to OmniMark's built-in SGML and XML parsers, differing only in specifying "markup-parse xml" instead of "xml-parse document" or something like it, as above.

markup-parse tells OmniMark to invoke an external markup parser, and xml tells OmniMark which external markup parser it is.

The scan argument is used for the same purpose as with OmniMark's built-in parsers to provide input to the parser. It can be a string, a file, the invocation of an external source function, or the invocation of an input-function.

The omxerces.xmd module defines the xerces markup parser function and the information that can be passed to it on invocation. The Xerces xml markup parser function returns the Xerces-based markup parser to OmniMark, and then OmniMark uses it within the do markup-parse action.

The Xerces-based markup parser invokes element and other OmniMark rules in the same manner as OmniMark's built-in parsers. The information available in those rules differs from that provided by OmniMark's built-in parsers in some respects, as described below.

Invoking the Xerces-Based XML Parser -- Further Options

The Xerces-Based XML Parser takes two optional arguments, schemas and namespaces, which control the W3C schema and XML namespace processing done by the Xerces markup parser.

omxerces.xmd defines named values for use with the schemas argument:

omxerces.xmd also defines named values for use with the namespaces argument:

The namespaces argument doesn't affect OmniMark namespace processing, which is done independently of namespace processing done by the markup parser. The easiest way of distinguishing the two is to observe that the markup parser is responsible for namespace validation, and OmniMark is responsible for making use of the namespace information.

Example


    import "omxerces.xmd" unprefixed
    process
       do markup-parse xml
          schemas no-schemas ;the Xerces parser will do no schema processing
          namespaces no-namespace-validation ;the Xerces parser will do no namespace processing
           scan file "my.xml"
       done

What You Get from the Xerces-Based XML Parser

The following is a list of what information is available to an OmniMark program from version 1.0 of the Xerces-based XML markup parser. In particular, it describes both new things that the xerces markup parser does for OmniMark programs, and limitations as compared to using the built-in OmniMark markup parsers.

W3C Schemas

The Xerces-Based XML Parser processes and validates W3C Schemas, and what's returned to the OmniMark program is based on how the document is interpreted by any schema used. The most noticeable effect of using a schema is in:

Schemas are read into an OmniMark program as external text entities. You can use the external-text-entity #SCHEMA rule to control how schemas are found and pre-processed by an OmniMark program.

No information from a schema or from a DTD is available to the OmniMark program, even though it's used by the markup parser in interpreting the document.

Ignorable Whitespace

OmniMark sees what XML defines as "ignorable whitespace" as the contents of a marked-section ignore. The marked-section ignore rule can be used to capture ignorable white space. If there's no marked-section ignore rule, then ignorable whitespace is ignored.

Processing Instructions

Processing instructions are returned to the processing-instruction rule in the normal manner with one exception: the XML Declaration, which is encoded as a processing instruction starting with <?xml, is used by the markup parser and is not returned to the OmniMark program.

Errors and Warnings

Errors and warnings from the Xerces-based markup parser are returned to OmniMark as errors and warnings in the same manner as for its built-in markup parsers.

The only difference is that there is just one numeric exception code for errors and one for warnings, so the numeric exception code cannot be used to distinguish between different kinds of errors.

The Xerces-based markup parser does not normally stop when it encounters what the Xerces XML parser considers a fatal error -- it keeps on going. This is normally appropriate, because the Xerces XML parser can recover from most errors. However, there are cases in which it cannot recover. In these cases it is possible to have an error multiply reported.

To prevent run-away reporting of errors, the Xerces-based markup parser terminates if it encounters 5 fatal errors in a row, without other information intervening.

What Rules Are Fired

The following lists all the OmniMark markup parser rules that are of use with the Xerces-based markup parser:

        Other Library Functions
   xerces.omxerces-version
   xerces.xml
 
 

Top [ INDEX ] [ CONCEPTS ] [ TASKS ] [ SYNTAX ] [ LIBRARIES ] [ LEGACYLIBRARIES ] [ ERRORS ]

OmniMark 7.1.2 Documentation Generated: June 28, 2005 at 5:46:08 pm
If you have any comments about this section of the documentation, send email to [email protected]

Copyright © Stilo Corporation, 1988-2005.