Provided by: latexml_0.8.2-1_all bug

NAME

       "LaTeXML::Common::Model" - represents the Document Model

DESCRIPTION

       "LaTeXML::Common::Model" encapsulates information about the document model to be used in
       converting a digested document into XML by the LaTeXML::Core::Document.  This information
       is based on the document schema (eg, DTD, RelaxNG), but is also modified by package
       modules; thus the model may not be complete until digestion is completed.

       The kinds of information that is relevant is not only the content model (what each element
       can contain contain), but also SGML-like information such as whether an element can be
       implicitly opened or closed, if needed to insert a new element into the document.

       Currently, only an approximation to the schema is understood and used.  For example, we
       only record that certain elements can appear within another; we don't preserve any
       information about required order or number of instances.

       It extends LaTeXML::Common::Object.

   Model Creation
       "$model = LaTeXML::Common::Model->new(%options);"
           Creates a new model.  The only useful option is "permissive=>1" which ignores any DTD
           and allows the document to be built without following any particular content model.

   Document Type
       "$model->setDocType($rootname,$publicid,$systemid,%namespaces);"
           Declares the expected rootelement, the public and system ID's of the document type to
           be used in the final document.  The hash %namespaces specifies the namespace prefixes
           that are expected to be found in the DTD, along with the associated namespace URI.
           These prefixes may be different from the prefixes used in implementation code (eg. in
           ltxml files; see RegisterNamespace).  The generated document will use the namespaces
           and prefixes defined here.

   Namespaces
       Note that there are two namespace mappings between namespace URIs and prefixes that are
       relevant to LaTeXML.  The `code' mapping is the one used in code implementing packages,
       and in particular, constructors defined within those packages.  The prefix "ltx" is used
       consistently to refer to LaTeXML's own namespace ("http://dlmf.nist.gov/LaTeXML)".

       The other mapping, the `document' mapping, is used in the created document; this may be
       different from the `code' mapping in order to accommodate DTDs, for example, or for use by
       other applications that expect a rigid namespace mapping.

       "$model->registerNamespace($prefix,$namespace_url);"
           Register $prefix to stand for the namespace $namespace_url.  This prefix can then be
           used to create nodes in constructors and Document methods.  It will also be recognized
           in XPath expressions.

       "$model->getNamespacePrefix($namespace,$forattribute,$probe);"
           Return the prefix to use for the given $namespace.  If $forattribute is nonzero, then
           it looks up the prefix as appropriate for attributes.  If $probe is nonzero, it only
           probes for the prefix, without creating a missing entry.

       "$model->getNamespace($prefix,$probe);"
           Return the namespace url for the given $prefix.

   Model queries
       "$boole = $model->canContain($tag,$childtag);"
         Returns whether an element with qualified name $tag can contain an element with
         qualified name $childtag.  The tag names #PCDATA, #Document, #Comment and
         #ProcessingInstruction are specially recognized.

       "$boole = $model->canHaveAttribute($tag,$attribute);"
         Returns whether an element with qualified name $tag is allowed to have an attribute with
         the given name.

SEE ALSO

       LaTeXML::Common::Model::DTD, LaTeXML::Common::Model::RelaxNG.

AUTHOR

       Bruce Miller <bruce.miller@nist.gov>

COPYRIGHT

       Public domain software, produced as part of work done by the United States Government &
       not subject to copyright in the US.