LaTeXM...:Model(3pm)

πŸ’… NAME πŸ’…

"LaTeXML::Common::Model" β€” represents the Document Model. Welcome to the LaTeXM...:Model(3pm) manual from User Contributed Perl Documentation, bestie β€” this module is the main character for real. πŸŽ€


πŸ’– DESCRIPTION πŸ’–

okay so LaTeXML::Common::Model encapsulates all the info about the document model that gets used when converting a digested document into XML by LaTeXML::Core::Document. ✨

This info is based on the document schema (eg, DTD, RelaxNG), but it also gets modified by package modules; so the model may not be complete until digestion is completed. iykyk 🫢

The kinds of information that are relevant aren’t just the content model (what each element can contain) β€” it’s also SGML-like info, like 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. lowkey important. 😭

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. slay ✨


πŸ“œ 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 πŸ‘€

Go peek at LaTeXML::Common::Model::DTD and LaTeXML::Common::Model::RelaxNG. πŸ¦‹


πŸ‘‘ AUTHOR πŸ‘‘

Bruce Miller <bruce.miller@nist.gov> β€” hi Bruce, icon behavior. πŸ’œ


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


okay bye bestie πŸ’‹ this page is from perl v5.40.1, dated 2025-11-16, and it’s the LaTeXM...:Model(3pm) manual β€” mwah! πŸŽ€βœ¨

πŸ“¦ where this page comes from