From 7b10b769d6590712fc95b1c29e1d2a8a8fb85260 Mon Sep 17 00:00:00 2001
From: Jez Higgins <jez@jezuk.co.uk>
Date: Wed, 14 Nov 2012 09:20:56 +0000
Subject: [PATCH] stop string construction error, but think I'm going to have
 to rework the ValueRules and ChildElements

---
 .../XSLT/impl/xslt_stylesheet_compiler.hpp    | 24 ++++++++++---------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/include/XSLT/impl/xslt_stylesheet_compiler.hpp b/include/XSLT/impl/xslt_stylesheet_compiler.hpp
index bacb78f7..edab806c 100644
--- a/include/XSLT/impl/xslt_stylesheet_compiler.hpp
+++ b/include/XSLT/impl/xslt_stylesheet_compiler.hpp
@@ -94,11 +94,11 @@ private:
     if(localName != SC::stylesheet && localName != SC::transform)
       throw SAX::SAXException("Top-level element must be 'stylesheet' or 'transform'.");
     
-    static const ValueRule<string_type> rules[] = { { SC::version, true, 0, 0 },
-                                                    { SC::extension_element_prefixes, false, 0, 0 },
-                                                    { SC::exclude_result_prefixes, false, 0, 0 },
-                                                    { SC::id, false, 0, 0 },
-                                                    { 0, false, 0, 0 } };
+    static const ValueRule<string_type> rules[] = { { SC::version, true },
+                                                    { SC::extension_element_prefixes, false },
+                                                    { SC::exclude_result_prefixes, false },
+                                                    { SC::id, false },
+                                                    { string_adaptor::empty_string(), false } };
     std::map<string_type, string_type> attributes = gatherAttributes(qName, atts, rules);
     if(attributes[SC::version] != SC::Version)
       throw SAX::SAXException("I'm only a poor version 1.0 XSLT Transformer.");
@@ -150,7 +150,9 @@ private:
       return;
     } // if ...
     
-    for(const ChildElement<string_type, string_adaptor>* c = allowedChildren; c->name != string_adaptor::empty_string(); ++c)
+    for(const ChildElement<string_type, string_adaptor>* c = allowedChildren; 
+        c->name != string_adaptor::empty_string(); 
+        ++c)
       if(c->name == localName)
       {
         context_.push(0,
@@ -202,19 +204,19 @@ private:
 template<class string_type, class string_adaptor>
 const ChildElement<string_type, string_adaptor> StylesheetHandler<string_type, string_adaptor>::allowedChildren[] =
   {
+    { SC::template_, CreateHandler<TemplateHandler<string_type, string_adaptor> > },
+    { SC::param, CreateHandler<TopLevelVariableHandler<Param<string_type, string_adaptor> > >},
+    { SC::variable, CreateHandler<TopLevelVariableHandler<Variable<string_type, string_adaptor> > > },
+    { SC::output, CreateHandler<OutputHandler<string_type, string_adaptor> >},
     { SC::attribute_set, CreateHandler<NotImplementedYetHandler<string_type, string_adaptor> >},
     { SC::decimal_format, CreateHandler<NotImplementedYetHandler<string_type, string_adaptor> >},
     //"import"
     //"include"
     { SC::key, CreateHandler<KeyHandler<string_type, string_adaptor> >},
     { SC::namespace_alias, CreateHandler<NamespaceAliasHandler<string_type, string_adaptor> >},
-    { SC::output, CreateHandler<OutputHandler<string_type, string_adaptor> >},
-    { SC::param, CreateHandler<TopLevelVariableHandler<Param<string_type, string_adaptor> > >},
     { SC::preserve_space, CreateHandler<NotImplementedYetHandler<string_type, string_adaptor> >},
     { SC::strip_space, CreateHandler<NotImplementedYetHandler<string_type, string_adaptor> >},
-    { SC::template_, CreateHandler<TemplateHandler<string_type, string_adaptor> > },
-    { SC::variable, CreateHandler<TopLevelVariableHandler<Variable<string_type, string_adaptor> > > },
-    { 0, 0 }
+    { string_adaptor::empty_string(), 0 }
   }; // StylesheetHandler::allowedChildren
 
 template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >