---
name: "Template::Plugin::HTML"
section: "3pm"
platform: "linux"
package: "perl-template-toolkit"
version: "3.106-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Template::Plugin::HTML"
---

# Template::Plugin::HTML(3pm)

Plugin to create HTML elements

## NAME

Template::Plugin::HTML - Plugin to create HTML elements

## SYNOPSIS

```
    [% USE HTML %]
    [% HTML.escape("if (a < b && c > d) ..." %]
    [% HTML.element(table => { border => 1, cellpadding => 2 }) %]
    [% HTML.attributes(border => 1, cellpadding => 2) %]
```

## DESCRIPTION

The `"HTML"` plugin is a very basic plugin, implementing a few useful methods for generating HTML.

## METHODS

### escape(text)

Returns the source text with any HTML reserved characters such as `"<"`, `">"`, etc., correctly escaped to their entity equivalents.

### attributes(hash)

Returns the elements of the hash array passed by reference correctly formatted (e.g. values quoted and correctly escaped) as attributes for an HTML element.

### add\_attribute(attributes)

This provides a way to incrementally add attributes to the object. The values passed in are stored in the object.  Calling element with just a tag or attributes without an parameters will used the saved attributes.

```
    USE tag = HTML;
    tag.add_attributes( { class => 'navbar' } );
    tag.add_attributes( { id => 'foo' } );
    tag.add_attributes( { class => 'active' } );
    tag.element( 'li' ); # <li class="navbar active" id="foo">
```

This method has two aliases: **add\_attribute()** and **add()**.

### replace\_attribute(attributes)

This will replace an attribute value instead of add to existing.

```
    USE tag = HTML;
    tag.add_attributes( { class => 'navbar' } );
    tag.add_attributes( { id => 'foo' } );
    tag.replace_attributes( { class => 'active' } );
    tag.element( 'li' ); # <li class="active" id="foo">
```

This method has two aliases: **replace\_attribute()** and **replace()**.

### clear\_attributes

Clears any saved attributes

### element(type, attributes)

Generates an HTML element of the specified type and with the attributes provided as an optional hash array reference as the second argument or as named arguments.

```
    [% HTML.element(table => { border => 1, cellpadding => 2 }) %]
    [% HTML.element('table', border=1, cellpadding=2) %]
    [% HTML.element(table => attribs) %]
```

## DEBUGGING

The HTML plugin accepts a `"sorted"` option as a constructor argument which, when set to any true value, causes the attributes generated by the `attributes()` method (either directly or via `element()`) to be returned in sorted order.  Order of attributes isn't important in HTML, but this is provided mainly for the purposes of debugging where it is useful to have attributes generated in a deterministic order rather than whatever order the hash happened to feel like returning the keys in.

```
    [% USE HTML(sorted=1) %]
    [% HTML.element( foo => { charlie => 1, bravo => 2, alpha => 3 } ) %]
```

generates:

```
    <foo alpha="3" bravo="2" charlie="1">
```

## AUTHOR

Andy Wardley \<abw@wardley.org\> \<http://wardley.org/\>

## COPYRIGHT

Copyright (C) 1996-2022 Andy Wardley.  All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## SEE ALSO

Template::Plugin
