dwww Home | Manual pages | Find package

Template::Plugin::XML:UserlContributed Perl DTemplate::Plugin::XML::Style(3pm)

NAME
       Template::Plugin::XML::Style - Simple XML stylesheet transfomations

SYNOPSIS
           [% 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 %]

DESCRIPTION
       This plugin defines a filter for performing simple stylesheet based
       transformations of XML text.

       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>

AUTHOR
       Andy Wardley

COPYRIGHT
       Copyright (C) 2001-2006 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

perl v5.34.0                      2022-07-04 Template::Plugin::XML::Style(3pm)

Generated by dwww version 1.15 on Mon Jul 1 04:40:12 CEST 2024.