small fix
[mir.git] / source / mir / generator / tal / TALTemplateParser.java
index a03a4ed..5bd4dd0 100755 (executable)
@@ -49,7 +49,7 @@ public class TALTemplateParser {
       TALHandler handler = new TALHandler(aParser);\r
       XMLReader reader = new XMLReader(false);\r
 \r
-      reader.parseString(aData, handler);\r
+      reader.parseString(true, aData, handler);\r
 \r
       return new TALTemplate(aParser, handler.getNode());\r
     }\r
@@ -63,7 +63,7 @@ public class TALTemplateParser {
       TALHandler handler = new TALHandler(aParser);\r
       XMLReader reader = new XMLReader(false);\r
 \r
-      reader.parseInputStream(anInputStream, handler);\r
+      reader.parseInputStream(true, anInputStream, handler);\r
 \r
       return new TALTemplate(aParser, handler.getNode());\r
     }\r
@@ -82,15 +82,15 @@ public class TALTemplateParser {
 \r
 \r
 \r
-  private static final String CONDITION_ATTRIBUTE = "tal:condition";\r
-  private static final String REPEAT_ATTRIBUTE = "tal:repeat";\r
-  private static final String CONTENT_ATTRIBUTE = "tal:content";\r
-  private static final String ERROR_ATTRIBUTE = "tal:on-error";\r
-  private static final String REPLACE_ATTRIBUTE = "tal:replace";\r
-  private static final String DEFINITION_ATTRIBUTE = "tal:define";\r
-  private static final String ONERROR_ATTRIBUTE = "tal:onerror";\r
-  private static final String OMITTAG_ATTRIBUTE = "tal:omit-tag";\r
-  private static final String ATTRIBUTE_ATTRIBUTE = "tal:attributes";\r
+  private static final String CONDITION_ATTRIBUTE = "condition";\r
+  private static final String REPEAT_ATTRIBUTE = "repeat";\r
+  private static final String CONTENT_ATTRIBUTE = "content";\r
+  private static final String ERROR_ATTRIBUTE = "on-error";\r
+  private static final String REPLACE_ATTRIBUTE = "replace";\r
+  private static final String DEFINITION_ATTRIBUTE = "define";\r
+  private static final String ONERROR_ATTRIBUTE = "onerror";\r
+  private static final String OMITTAG_ATTRIBUTE = "omit-tag";\r
+  private static final String ATTRIBUTE_ATTRIBUTE = "attributes";\r
 \r
 \r
   protected static class TALHandler extends XMLReader.AbstractSectionHandler {\r
@@ -124,8 +124,8 @@ public class TALTemplateParser {
       Iterator i = anAttributes.keySet().iterator();\r
 \r
       while (!smartTag && i.hasNext()) {\r
-        XMLReader.XMLName name = (XMLReader.XMLName) i.next();\r
-        smartTag = smartTag || (name.getPrefix().equals(TAL_PREFIX));\r
+        String name = (String) i.next();\r
+        smartTag = smartTag || (name.startsWith(TAL_PREFIX+":"));\r
       }\r
 \r
       if (!smartTag) {\r
@@ -135,7 +135,7 @@ public class TALTemplateParser {
         while (i.hasNext()) {\r
           Map.Entry entry = (Map.Entry) i.next();\r
 \r
-          appendCode(" "+ normalizeXMLName((XMLReader.XMLName) entry.getKey()));\r
+          appendCode(" "+ entry.getKey());\r
           appendCode("=\"");\r
           appendText((String) entry.getValue());\r
           appendCode("\"");\r
@@ -150,13 +150,23 @@ public class TALTemplateParser {
         i = anAttributes.entrySet().iterator();\r
         while (i.hasNext()) {\r
           Map.Entry entry = (Map.Entry) i.next();\r
-          XMLReader.XMLName name = (XMLReader.XMLName) entry.getKey();\r
+          String fullAttributeName = (String) entry.getKey();\r
+          List attributeParts = StringRoutines.separateString(fullAttributeName, ":");\r
+          String prefix = "";\r
+          String name = "";\r
+          if (attributeParts.size()==2) {\r
+            name = (String) attributeParts.get(1);\r
+            prefix = (String) attributeParts.get(0);\r
+          }\r
+          else {\r
+            name = (String) attributeParts.get(0);\r
+          }\r
 \r
-          if (!name.getPrefix().equals(TAL_PREFIX)) {\r
-            smartNode.addFixedAttribute(normalizeXMLName(name), (String) entry.getValue());\r
+          if (!prefix.equals(TAL_PREFIX)) {\r
+            smartNode.addFixedAttribute(fullAttributeName, (String) entry.getValue());\r
           }\r
           else {\r
-            if (name.getLocalName().equalsIgnoreCase(DEFINITION_ATTRIBUTE)) {\r
+            if (name.equalsIgnoreCase(DEFINITION_ATTRIBUTE)) {\r
               List definitions = StringRoutines.splitStringWithEscape((String) entry.getValue(), ';', '\\');\r
 \r
               Iterator j = definitions.iterator(); {\r
@@ -167,33 +177,33 @@ public class TALTemplateParser {
                 }\r
               }\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(CONDITION_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(CONDITION_ATTRIBUTE)) {\r
               smartNode.setCondition(parser.preparseBooleanExpression((String) entry.getValue()));\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(CONTENT_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(CONTENT_ATTRIBUTE)) {\r
               smartNode.setContent(parser.preparseStringExpression((String) entry.getValue()));\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(ERROR_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(ERROR_ATTRIBUTE)) {\r
               smartNode.setError(parser.preparseStringExpression((String) entry.getValue()));\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(OMITTAG_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(OMITTAG_ATTRIBUTE)) {\r
               if (((String) entry.getValue()).trim().length()==0)\r
                 smartNode.setOmitTag(parser.preparseTRUE());\r
               else\r
                 smartNode.setOmitTag(parser.preparseBooleanExpression((String) entry.getValue()));\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(REPLACE_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(REPLACE_ATTRIBUTE)) {\r
               smartNode.setOmitTag(parser.preparseTRUE());\r
               smartNode.setContent(parser.preparseStringExpression((String) entry.getValue()));\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(REPEAT_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(REPEAT_ATTRIBUTE)) {\r
               List parts = StringRoutines.separateString((String) entry.getValue(), " ");\r
 \r
               if (parts.size()==2) {\r
                 smartNode.setRepeat(parser.preparseReferenceExpression((String) parts.get(0)), parser.preparseExpression((String) parts.get(1)));\r
               }\r
             }\r
-            else if (name.getLocalName().equalsIgnoreCase(ATTRIBUTE_ATTRIBUTE)) {\r
+            else if (name.equalsIgnoreCase(ATTRIBUTE_ATTRIBUTE)) {\r
               List attributes = StringRoutines.splitStringWithEscape((String) entry.getValue(), ';', '\\');\r
 \r
               Iterator j = attributes.iterator(); {\r