#ifndef ARABICA_XSLT_TEMPLATE_HPP #define ARABICA_XSLT_TEMPLATE_HPP #include "xslt_item.hpp" namespace Arabica { namespace XSLT { class Template : public ItemContainer { public: Template(const std::pair& name, const std::pair& mode, const std::string& priority) : matches_(), name_(name), mode_(mode) { } // Template Template(const std::vector >& matches, const std::pair& name, const std::pair& mode, const std::string& priority) : matches_(matches), name_(name), mode_(mode) { if(!priority.empty()) { float p = boost::lexical_cast(priority); for(std::vector >::iterator m = matches_.begin(), me = matches_.end(); m != me; ++m) m->override_priority(p); } // if ... } // Template virtual ~Template() { } // ~Template virtual void execute(const DOM::Node& node, ExecutionContext& context) const { execute_children(node, context); } // execute const std::vector >& compiled_matches() const { return matches_; } bool has_name() const { return !name_.second.empty(); } const std::pair& name() const { return name_; } const std::pair& mode() const { return mode_; } private: std::vector > matches_; std::pair name_; std::pair mode_; }; // class Template } // namespace XSLT } // namespace Arabica #endif // ARABICA_XSLT_TEMPLATE_HPP