# Interface Transform

All Superinterfaces:
  `AlgorithmMethod, XMLStructure`

All Known Subinterfaces:
  `CanonicalizationMethod`

All Known Implementing Classes:
  `TransformService`

public interface Transform extends XMLStructure, AlgorithmMethod
A representation of the XML `Transform` element as defined in the W3C Recommendation for XML-Signature Syntax and Processing. The XML Schema Definition is defined as:

    <element name="Transform" type="ds:TransformType"/>
      <complexType name="TransformType" mixed="true">
        <choice minOccurs="0" maxOccurs="unbounded">
          <any namespace="##other" processContents="lax"/>
          <!-- (1,1) elements from (0,unbounded) namespaces -->
          <element name="XPath" type="string"/>
        </choice>
        <attribute name="Algorithm" type="anyURI" use="required"/>
      </complexType>

A `Transform` instance may be created by invoking the `newTransform` method of the `XMLSignatureFactory` class.

Since:
  1.6
See Also:
  - `XMLSignatureFactory.newTransform(String, TransformParameterSpec)`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`BASE64`
The Base64 transform algorithm URI.
`static final String`
`ENVELOPED`
The Enveloped Signature transform algorithm URI.
`static final String`
`XPATH`
The XPath transform algorithm URI.
`static final String`
`XPATH2`
The XPath Filter 2 transform algorithm URI.
`static final String`
`XSLT`
The XSLT transform algorithm URI.

## Method Summary

Modifier and Type
Method
Description
`AlgorithmParameterSpec`
`getParameterSpec()`
Returns the algorithm-specific input parameters associated with this `Transform`.
`Data`
`transform(Data data, XMLCryptoContext context)`
Transforms the specified data using the underlying transform algorithm.
`Data`
`transform(Data data, XMLCryptoContext context, OutputStream os)`
Transforms the specified data using the underlying transform algorithm.

### Methods declared in interface AlgorithmMethod

`getAlgorithm`
Modifier and Type
Method
Description
`String`
`getAlgorithm()`
Returns the algorithm URI of this `AlgorithmMethod`.

### Methods declared in interface XMLStructure

`isFeatureSupported`
Modifier and Type
Method
Description
`boolean`
`isFeatureSupported(String feature)`
Indicates whether a specified feature is supported.

## Field Details

### BASE64

static final String BASE64
The Base64 transform algorithm URI.

See Also:
  - Constant Field Values

### ENVELOPED

static final String ENVELOPED
The Enveloped Signature transform algorithm URI.

See Also:
  - Constant Field Values

### XPATH

static final String XPATH
The XPath transform algorithm URI.

See Also:
  - Constant Field Values

### XPATH2

static final String XPATH2
The XPath Filter 2 transform algorithm URI.

See Also:
  - Constant Field Values

### XSLT

static final String XSLT
The XSLT transform algorithm URI.

See Also:
  - Constant Field Values

## Method Details

### getParameterSpec

AlgorithmParameterSpec getParameterSpec()
Returns the algorithm-specific input parameters associated with this `Transform`.

The returned parameters can be typecast to a `TransformParameterSpec` object.

Specified by:
  `getParameterSpec` in interface `AlgorithmMethod`
Returns:
  the algorithm-specific input parameters (may be `null` if not specified)

### transform

Data transform(Data data, XMLCryptoContext context) throws TransformException
Transforms the specified data using the underlying transform algorithm.

Parameters:
  `data` - the data to be transformed
  `context` - the `XMLCryptoContext` containing additional context (may be `null` if not applicable)
Returns:
  the transformed data
Throws:
  `NullPointerException` - if `data` is `null`
  `TransformException` - if an error occurs while executing the transform

### transform

Data transform(Data data, XMLCryptoContext context, OutputStream os) throws TransformException
Transforms the specified data using the underlying transform algorithm. If the output of this transform is an `OctetStreamData`, then this method returns `null` and the bytes are written to the specified `OutputStream`. Otherwise, the `OutputStream` is ignored and the method behaves as if `transform(Data, XMLCryptoContext)` were invoked.

Parameters:
  `data` - the data to be transformed
  `context` - the `XMLCryptoContext` containing additional context (may be `null` if not applicable)
  `os` - the `OutputStream` that should be used to write the transformed data to
Returns:
  the transformed data (or `null` if the data was written to the `OutputStream` parameter)
Throws:
  `NullPointerException` - if `data` or `os` is `null`
  `TransformException` - if an error occurs while executing the transform