Template::Plugin::XML::Style - Simple XML stylesheet transfomations
[% USE xmlstyle table = { attributes = { border = 0 cellpadding = 4 cellspacing = 1 } } %]
[% FILTER xmlstyle %] <table> <tr> <td>Foo</td> <td>Bar</td> <td>Baz</td> </tr> </table> [% END %]
Named parameters are used to define those XML elements which require transformation. These may be specified with the USE directive when the plugin is loaded and/or with the FILTER directive when the plugin is used.
This example shows how the default attributes "border="0"" and "cellpadding="4"" can be added to <table> elements.
[% USE xmlstyle table = { attributes = { border = 0 cellpadding = 4 } } %]
[% FILTER xmlstyle %] <table> ... </table> [% END %]
This produces the output:
<table border="0" cellpadding="4"> ... </table>
Parameters specified within the USE directive are applied automatically each time the "xmlstyle" FILTER is used. Additional parameters passed to the FILTER directive apply for only that block.
[% USE xmlstyle table = { attributes = { border = 0 cellpadding = 4 } } %]
[% FILTER xmlstyle tr = { attributes = { valign="top" } } %] <table> <tr> ... </tr> </table> [% END %]
Of course, you may prefer to define your stylesheet structures once and simply reference them by name. Passing a hash reference of named parameters is just the same as specifying the named parameters as far as the Template Toolkit is concerned.
[% style_one = { table = { ... } tr = { ... } } style_two = { table = { ... } td = { ... } } style_three = { th = { ... } tv = { ... } } %]
[% USE xmlstyle style_one %]
[% FILTER xmlstyle style_two %] # style_one and style_two applied here [% END %]
[% FILTER xmlstyle style_three %] # style_one and style_three applied here [% END %]
Any attributes defined within the source tags will override those specified in the style sheet.
[% USE xmlstyle div = { attributes = { align = 'left' } } %]
[% FILTER xmlstyle %] <div>foo</div> <div align="right">bar</div> [% END %]
The output produced is:
<div align="left">foo</div> <div align="right">bar</div>
The filter can also be used to change the element from one type to another.
[% FILTER xmlstyle th = { element = 'td' attributes = { bgcolor='red' } } %] <tr> <th>Heading</th> </tr> <tr> <td>Value</td> </tr> [% END %]
The output here is as follows. Notice how the end tag "</th>" is changed to "</td>" as well as the start tag.
<tr> <td bgcolor="red">Heading</td> </tr> <tr> <td>Value</td> </tr>
You can also define text to be added immediately before or after the start or end tags. For example:
[% FILTER xmlstyle table = { pre_start = '<div align="center">' post_end = '</div>' } th = { element = 'td' attributes = { bgcolor='red' } post_start = '<b>' pre_end = '</b>' } %] <table> <tr> <th>Heading</th> </tr> <tr> <td>Value</td> </tr> </table> [% END %]
The output produced is:
<div align="center"> <table> <tr> <td bgcolor="red"><b>Heading</b></td> </tr> <tr> <td>Value</td> </tr> </table> </div>
<http://www.andywardley.com/|http://www.andywardley.com/>
Copyright (C) 1996-2004 Andy Wardley. All Rights Reserved. Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |