## Class tag_processor_v2

zeep::http::tag_processor_v2 — version two of the tag_processor in libzeep

## Synopsis

    // In header: <zeep/http/tag-processor.hpp>

    class tag_processor_v2 : public  {
    public:
      // types
      typedef xml::element *, xml::attribute *, scope &, basic_template_processor & ;

      // each handler returns a code telling the processor what to do with the node
      enum AttributeAction { none, remove, replace };

      // construct/copy/destruct
      ( = );

      // public static functions
       ();

      // public member functions

      (xml::node *, scope &, ,
                  basic_template_processor &);
       (, );

      // protected member functions
       (xml::node *, scope &, ,
                        basic_template_processor &);
       (xml::text &, scope &);
       (xml::element *, scope &, ,
                        basic_template_processor &);
      xml::node > >
      (xml::element *, ,
                            basic_template_processor &, json::element &,
                            scope &);
      xml::node > >
      (xml::element *, ,
                            basic_template_processor &, ,
                            , );

      (xml::element *, xml::attribute *, scope &,
                      , basic_template_processor &, );

      (xml::element *, xml::attribute *, scope &,
                          , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                        , basic_template_processor &, );

      (xml::element *, xml::attribute *, scope &,
                          , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                        , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                        , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                        , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                           , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                                 ,
                                 basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                          , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                          , basic_template_processor &,
                          , );

      (xml::element *, xml::attribute *, scope &,
                               , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                               , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                          , basic_template_processor &);

      (xml::element *, xml::attribute *, scope &,
                           , basic_template_processor &,
                           );
    };

## Description

This is the new tag_processor. It is designed to look a bit like Thymeleaf (https://www.thymeleaf.org/) This processor works on attributes mostly, but can process inline el constructs as well.

The documentention contains a section describing all the xml tags and attributes this processor handles.

### `tag_processor_v2` public construct/copy/destruct

1.     ( ns = );

   constructor with default namespace

### `tag_processor_v2` public static functions

1.      ();

   default namespace for this processor

### `tag_processor_v2` public member functions

1.     (xml::node * node, scope & scope,  dir,
                   basic_template_processor & loader);

   process xml parses the XHTML and fills in the special tags and evaluates the el constructs

2.      ( attr,  handler);

   It is possible to extend this processor with custom handlers.

### `tag_processor_v2` protected member functions

1.      (xml::node * node, scope & scope,
                          dir,
                         basic_template_processor & loader);

2.      (xml::text & t, scope & scope);

3.      (xml::element * e, scope & parentScope,
                          dir,
                         basic_template_processor & loader);

4.     xml::node > >
       (xml::element * node,  dir,
                             basic_template_processor & loader,
                             json::element & spec, scope & scope);

5.     xml::node > >
       (xml::element * node,  dir,
                             basic_template_processor & loader,
                              file,  selector,
                              byID);

6.     (xml::element * node, xml::attribute * attr, scope & scope,
                        dir, basic_template_processor & loader,
                        unless);

7.     (xml::element * node, xml::attribute * attr, scope & scope,
                            dir,
                           basic_template_processor & loader);

8.     (xml::element * node, xml::attribute * attr, scope & scope,
                          dir,
                         basic_template_processor & loader,  escaped);

9.     (xml::element * node, xml::attribute * attr, scope & scope,
                            dir,
                           basic_template_processor & loader);

10.     (xml::element * node, xml::attribute * attr, scope & scope,
                           dir,
                          basic_template_processor & loader);

11.     (xml::element * node, xml::attribute * attr, scope & scope,
                           dir,
                          basic_template_processor & loader);

12.     (xml::element * node, xml::attribute * attr, scope & scope,
                           dir,
                          basic_template_processor & loader);

13.     (xml::element * node, xml::attribute * attr,
                             scope & scope,  dir,
                             basic_template_processor & loader);

14.     (xml::element * node, xml::attribute * attr,
                                   scope & scope,  dir,
                                   basic_template_processor & loader);

15.     (xml::element * node, xml::attribute * attr, scope & scope,
                             dir,
                            basic_template_processor & loader);

16.     (xml::element * node, xml::attribute * attr, scope & scope,
                             dir,
                            basic_template_processor & loader,  dest,
                             prepend);

17.     (xml::element * node, xml::attribute * attr,
                                 scope & scope,  dir,
                                 basic_template_processor & loader);

18.     (xml::element * node, xml::attribute * attr,
                                 scope & scope,  dir,
                                 basic_template_processor & loader);

19.     (xml::element * node, xml::attribute * attr, scope & scope,
                             dir,
                            basic_template_processor & loader);

20.     (xml::element * node, xml::attribute * attr,
                             scope & scope,  dir,
                             basic_template_processor & loader,
                              tia);