Skip to content

PureXML 0.3.0

Choose a tag to compare

@mihaelamj mihaelamj released this 24 Jun 15:21
· 86 commits to main since this release
3aca6c3

A conformance-focused release: 37 Apache Xalan XSLT 1.0 cases closed since 0.2.0 (baseline 61 to 24).

XSLT / XPath

  • HTML output method (16.2): < left literal in attribute values; doctype named HTML; non-null-namespace elements serialized as XML; non-ASCII percent-escaping in URI-valued attributes.
  • document() base-URI resolution (12.1): two-argument and node-set forms, string-form against the stylesheet element's base, and document('') in included/imported files.
  • xsl:key union match patterns now index every branch; key() returns all non-unique matches.
  • xsl:namespace-alias keeps the literal prefix and remaps only the URI (7.1.1).
  • xsl:number: format is an attribute value template; level="single" counts the from-boundary node when it also matches count.
  • xsl:strip-space/preserve-space match by namespace; xml:space="preserve" honored in the stylesheet.
  • disable-output-escaping ignored off text nodes (16.4); axis-prefixed match-pattern priority (5.5).
  • XPath: a lone / parses as the root before a terminator; large integer-valued numbers format without a decimal point.

Emitting

  • Processing-instruction data containing ?> is split with a space (7.3 recovery).

Verification

Green across the full local suite (1655 tests) and all authoritative corpora: Apache Xalan XSLT, the W3C XML 1.0 suite (xmltest, OASIS, IBM, Sun, Eduni, Japanese), the W3C XSD Schema Test Suite (14k+ groups), and the RELAX NG spec suite. swiftformat/swiftlint clean; builds and tests under WASI. Pure Swift, no dependencies, no Foundation in the library.

See CHANGELOG.md for the full list.