fcl-xml

From Lazarus wiki
Revision as of 21:27, 13 April 2012 by Gorelkin (talk | contribs) (→‎Units: updated with recently added units)
Jump to navigationJump to search

The package FCL-XML contains units that parse XML and html files to DOM, and can render the DOM tree to html,xhtml and xml.

Most notably the html part needs work still.

Units

Unit unit group comment
dom - Implements the DOM level 2 Core specification and some of the DOM level 3 Core properties/methods.
dom_html - DOM extensions for HTML, THTMLDocument
dtdmodel - Classes represententing the DTD (document type definition), used by xmlread and dom.
htmldefs - Contains basic HTML declarations.
htmlelements - Implements a DOM for HTML content. Contains a TDOMElement descendent for all valid HTML 4.1 tags.
htmlwriter - Implements a verified HTML producer.
htmwrite - Writes a DOM structure as UTF-8 encoded HTML data into file or stream.
sax - Base classes for a parser after SAX model.
sax_html - HTML plugin (implementation) for the html SAX parser.
sax_xml - XML plugin for the SAX parser.
xhtml - XHTML helper classes(?)
xmlcfg - Implements TXMLConfig class, which enables applications to store their configuration data in XML files.
xmlconf - An improved version of xmlcfg, based on DOMString instead of AnsiString. Provides better Unicode support, faster/smaller code due to absense of conversions, and TRegistry-like OpenKey/CloseKey methods.
xmliconv - Registers an any-to-UTF-16 decoder based on libiconv (iconvenc package)
xmliconv_windows - Registers an any-to-UTF-16 decoder based on libiconv (windows dependant iconv header), Windows version. (still uses iconv!)
xmlread - Provides an XML reader, which can read XML data from a file or stream.
xmlstreaming - (Not functional) An initial attempt to support standard component streaming in XML format. The working variant of this unit is available in Lazarus (components/codetools/laz_xmlstreaming.pas).
xmlutils - Implements utility functions and classes that are used by other units in the package.
xmlwrite - Writes a DOM structure as XML data into a file or stream. It can deal both with XML files and XML fragments.
xpath - Just a XPath implementation. Should be fairly completed, but there hasn't been further development recently.
xmlreader - Contains TXMLReader, an abstract base class for .NET style streamed XML reading.

Include files

include file comment
names.inc Included by xmlutils. Contains character tables for XML names.
tagsimpl.inc
tagsintf.inc contains all possible tags for htmlelements
wtagsimpl.inc
wtagsintf.inc contains all possible tags for htmlwriter
xpathkw.inc contains the perfect hash function for XPath keywords

Notes

  • beware, both dom_html and htmlelements seem to define a THTMLDocument class.
  • The nodemanager of DOM is not Delphi (2009 in my case) compatible, which can lead to strange crashes when attempting to free code. This might have to do with different minimal size of an object.

Tutorial

Links

Cleanup

  • lots of "dynamic" methods. Afaik FPC doesn't implement it (always virtual iirc), since it was mainly needed in 16-bit envs. Fixed in r13382
  • ifdef usedynarrays in sax.pp is so 1.0.x

See also