/** * XsltTransformer — XSLT-lite transformation engine * ──────────────────────────────────────────────────── * A lightweight, zero-dependency XSLT 1.0 subset transformer. * * Supported XSLT constructs * ───────────────────────── * xsl:stylesheet / xsl:transform * xsl:template match="..." * xsl:apply-templates [select="..."] * xsl:value-of select="..." * xsl:copy-of select="..." * xsl:element name="..." * xsl:attribute name="..." * xsl:text * xsl:if test="..." * xsl:choose / xsl:when / xsl:otherwise * xsl:for-each select="..." * xsl:output method="xml|html|text" indent="yes|no" * xsl:param / xsl:variable (local string values) * xsl:sort (lexicographic on current node's text) * Literal result elements (copied to output) * * Limitations (intentional subset) * ───────────────────────────────── * • No XSLT 2.0 / 3.0 features * • No external document() function * • No named templates / call-template * • XPath subset from XPathEngine (child, descendant, attribute, self, parent) * • No number formatting * * Usage * ───── * import { XsltTransformer, transformXml } from 'xml-xsd-engine/transform'; * * const result = transformXml(sourceXml, stylesheetXml); * // result is an XML string */ import { XmlDocument } from '../parser/XmlNodes'; export interface XsltOptions { /** Initial parameters passed to the stylesheet. Default: {} */ params?: Record; /** Indentation for XML/HTML output. Default: 2 */ indent?: number; } /** Transform an XML source string with an XSLT stylesheet string. */ export declare function transformXml(sourceXml: string, stylesheetXml: string, options?: XsltOptions): string; /** Transform an already-parsed XmlDocument with an XSLT stylesheet string. */ export declare function transformDocument(doc: XmlDocument, stylesheetXml: string, options?: XsltOptions): string; export declare class XsltTransformer { private templates; private output; private globalVars; private opts; constructor(stylesheetXml: string, options?: XsltOptions); /** Transform a source XML string. */ transform(sourceXml: string): string; /** Transform an already-parsed document. */ transformDocument(doc: XmlDocument): string; private _parseStylesheet; private _findTemplate; /** Very simple pattern matching: supports * / element-name / @attr */ private _matchesPattern; private _defaultPriority; private _applyTemplates; private _executeTemplate; private _executeNode; private _valueOf; private _copyOf; private _forEach; private _if; private _choose; private _element; private _literalElement; private _evalSelect; private _evalTest; private _expandAttrValue; private _isXsl; } //# sourceMappingURL=XsltTransformer.d.ts.map