Cfdi.Transform.XsltParser (cfdi_transform v4.0.1)

Copy Markdown

Parser de hojas XSLT del SAT (cadenaoriginal.xslt 4.0 / 3.3) basado en xslt-parser.ts del paquete @cfdi/transform.

No implementa XSLT general — sólo el subconjunto que el SAT usa para generar la cadena original:

  • xsl:include con href relativo (sigue el grafo desde el archivo raíz).
  • xsl:template match="..." (descarta name="Requerido|Opcional|ManejaEspacios").
  • xsl:call-template name="Requerido|Opcional" con xsl:with-param select="@Attr" o ruta.
  • xsl:apply-templates select="..."
  • xsl:for-each select="..." (incluye wildcard ./* y descendant .//foo).
  • xsl:if test="..." envolviendo reglas hijas.

Lectura recursiva de xsl:include con detección de ciclos via MapSet.

Summary

Functions

Variante que recibe el contenido del XSLT como string. No sigue xsl:include (no hay path base contra el cual resolverlo).

Parsea un archivo XSLT desde disco, siguiendo xsl:includes relativos.

Functions

parse(xslt_content)

@spec parse(String.t()) ::
  {:ok, Cfdi.Transform.Types.template_registry()} | {:error, term()}

Variante que recibe el contenido del XSLT como string. No sigue xsl:include (no hay path base contra el cual resolverlo).

parse_file(main_xslt_path)

@spec parse_file(String.t()) ::
  {:ok, Cfdi.Transform.Types.template_registry()} | {:error, term()}

Parsea un archivo XSLT desde disco, siguiendo xsl:includes relativos.

Devuelve {:ok, registry} con templates y namespaces.