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
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
\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
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
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
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
}\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