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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |