xmlsquishsource. compose. build.
中文

XML DSL & project guide

Know the boundaries that keep builds predictable

Recursive programs run within explicit budgets, while stable identity and language invariants keep projects auditable.

Jump to a chapter
On this page

Resource budgets

Recursive expansion is legal, but not free: depth, steps, nodes, bytes, and regular-expression work are bounded. Treat a budget error as a program design signal.

  • expansion depth and total steps
  • generated nodes and output bytes
  • regular-expression input and capture work

Language invariants

Comparison is exact and case-sensitive. The address identifies the vocabulary; the build never fetches it over the network.

Relative import paths are resolved from the file that declares them. The manager loads each source identity once and freezes the import closure before expansion.

At a call, args and fills are evaluated in the caller first. The macro body then runs at its definition location with only its explicit inputs.

Use xs:insert to emit a scalar as escaped text. It never reparses <, >, or & as markup. Use xs:fill/xs:slot when structure must remain XML.

Specifications, examples, and lineage

Never append a version or trailing slash to the namespace URI. Use snapshots only when auditing the contract implemented by an older release.