Skip to main content

Crate quarb_xml

Crate quarb_xml 

Source
Expand description

XML adapter for Quarb.

Maps a well-formed XML document onto the arbor model, parsing with quick-xml. Unlike the HTML adapter, parsing is strict: mismatched or unclosed tags, duplicate attributes, and unknown entity references are errors.

  • Elements are the nodes; text, CDATA, comments, processing instructions, and the doctype are not navigated (text is exposed as a projection instead).
  • A node’s name is its tag exactly as written, including any namespace prefix (dc:title). Prefixes are not resolved to URIs. Since : is not a bare-name character in Quarb, a prefixed name is navigated with a quoted segment (//'dc:title'); :::local-name and :::ns-prefix metadata allow prefix-agnostic filtering (//*[:::local-name = "title"]). The document root is unnamed; the document element is its single child.
  • Nodes have no traits: XML has no universal structural vocabulary, and leaf/container distinctions are already available as core metadata (:is-leaf, :n-children).
  • Attributes are properties: ::pages, ::href. The default projection (::) and ::text are the element’s text content; :::tag, :::id, :::local-name, :::ns-prefix, :::n-attrs, and any :::attr expose metadata.
  • An attribute holding an ID reference resolves: ::ref--> follows a bare IDREF value (book="b1") or a fragment (href="#b1") to the element with that id or xml:id.
  • Input is UTF-8 text; an encoding declaration in the XML prologue is ignored. Only the five predefined entities and numeric character references are resolved.

Structs§

XmlAdapter
A Quarb adapter over a parsed XML document.

Enums§

XmlError
An error building an XmlAdapter from document text.

Functions§

declared_encoding
The encoding an XML document declares in its prologue (<?xml version="1.0" encoding="windows-1251"?>), reported for the engine’s source boundary. The adapter decodes nothing: the boundary applies the declaration after ?encoding= and a byte-order mark have had their say. The prologue is scanned as ASCII-compatible bytes, as the XML recommendation’s appendix F reads it; a document whose first bytes are not <?xml declares nothing.