---
name: "Catmandu::XML::Transformer"
section: "3pm"
platform: "linux"
package: "libcatmandu-xml-perl"
version: "0.17-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::XML::Transformer"
---

# Catmandu::XML::Transformer(3pm)

Utility module for XML/XSLT processing

## NAME

Catmandu::XML::Transformer - Utility module for XML/XSLT processing

## SYNOPISIS

```
    $transformer = Catamandu::XML::Transformer->new( stylesheet => 'file.xsl' );
    $xml_string = $transformer->transform( $xml_string ); # SCALAR
    $xml_dom    = $transformer->transform( $xml_dom );    # XML::LibXML::Document
    $xml_struct = $transformer->transform( $xml_struct ); # ARRAY reference
    $xml_simple = $transformer->transform( $xml_simple ); # HASH reference
    $transformer = Catamandu::XML::Transformer->new( output_format => 'string' );
    $xml_string  = $transformer->transform( $xml );       # any XML to SCALAR
```

## CONFIGURATION

- stylesheet

  Zero or more XSLT files given as comma-separated list of files or array reference with multiple files to apply as transformation pipeline. Files are parsed once on instantiation of the Catmandu::XML::Transformer object.

- output\_format

  Expected output format `"dom"`, `"string"`, `"struct"`, `"simple"`. By default the input format triggers the output format. If the last stylesheet has text output (`"<xsl:output method="text"/>"`) then output format is automatically set to `"string"`.

## METHODS

- **stylesheet()**

  Returns an array reference of XSLT filenames used as transformation pipeline.

- **output\_format()**

  Returns the output format or `"undef"`.

## SEE ALSO

XML::Struct
