|  | 
 | ||||
|        | |||||
|  | |||||
| Related Syntax | Related Concepts | ||||
| control structure | do markup-parse | ||||
Syntax
do markup-parse markup-source-expression
   local-declaration*
   action*
done
    
 You can use do markup-parse to process a markup source, which may be produced either by one of
        OmniMark's internal parsers, or an external parser. do markup-parse provides a general
        interface for processing of markup streams.
      
 The markup source argument for do markup-parse can be generated by external parsers of all kinds,
        and is not limited  to parsed XML or SGML. There are two external parser libraries shipped with
        OmniMark: Xerces from the
        Apache project, and the RTF external parser.
      
 do markup-parse operates in the same way as do sgml-parse and do xml-parse,  except that it
        takes an already parsed markup source argument instead of the normal parameters of a do xml-parse
        or do sgml-parse invocation. In the example below, the markup source is the result of the
        external parser function xerces.xml and scan is a parameter of that function. Consult the
        OMXERCES library
          documentation for complete details on the parameters of the xerces.xml function.
        
  import "omxerces.xmd" prefixed by xerces.
  
  
  process
     do markup-parse xerces.xml scan file "my.xml"
        output "%c"
     done
  
  
  element #implied
     output "%c"
          
      
 Following the invocation of do markup-parse, OmniMark markup rules are fired, as when using an
          internal parser like do sgml-parse. Since string source data type is a subtype of markup
            source, a string source value can also be used as the argument of do markup-parse. In this
          case, only a single data-content rule is fired. If the argument is a more general markup source
          that contains markup events as well as data content, do markup-parse will fire the corresponding markup
          rule for each event.
        
The markup rule fired by a markup event will only have the information made available by the parser that originally produced the markup event, so you may not get the same information that you would have received from the internal parser. Note in particular that the XML and SGML error numbers reported by OmniMark's internal parsers are a product of those parsers, and will not be returned by an external parser. The error number reported by a markup error rule fired by an external parser will always be "0297". You will need to parse the error text to discover the specific error reported by the parser.
| Related Syntax | Related Concepts | 
Copyright © Stilo International plc, 1988-2008.