xsl:number implements all of XSLT 1.0 section 7.7: level single/multiple/any with count and from matched as patterns through the match cache, the value expression with the below-one bypass, and the format-token engine (punctuation, separator and token reuse, zero padding, alphabetic/roman/Greek sequences, digit grouping). An unmatched single/multiple count renders empty; level=any always yields a number. document() now caches per transform so repeated loads of the same URI return the identical document and generate-id() stays unique against live nodes (the idkey49 flake). Xalan baseline 557 -> 475 (numbering 84 -> 7).
11 lines
435 B
Swift
11 lines
435 B
Swift
extension PureXML.XSLT {
|
|
/// The documents a transform has loaded, keyed by URI: per the XSLT
|
|
/// `document()` definition the same reference returns the identical
|
|
/// document, so node identity (and `generate-id()`) is stable across
|
|
/// calls within one transform.
|
|
final class DocumentCache {
|
|
var trees: [String: PureXML.Model.TreeNode] = [:]
|
|
var sources: [String: PureXML.Model.Node] = [:]
|
|
}
|
|
}
|