- smartNode = new TALTemplate.SmartTemplateNode(currentTag);
- if (aTag.getPrefix().equals(TAL_PREFIX))
- smartNode.setOmitTag(parser.preparseTRUE());
-
- i = anAttributes.entrySet().iterator();
- while (i.hasNext()) {
- Map.Entry entry = (Map.Entry) i.next();
- XMLName name = (XMLName) entry.getKey();
-
- if (!name.getPrefix().equals(TAL_PREFIX)) {
- smartNode.addFixedAttribute(normalizeXMLName(name), (String) entry.getValue());
- }
- else {
- if (name.getLocalName().equalsIgnoreCase(DEFINITION_ATTRIBUTE)) {
- List definitions = StringRoutines.splitStringWithEscape((String) entry.getValue(), ';', '\\');
-
- Iterator j = definitions.iterator();
- while (j.hasNext())
- {
- List parts = StringRoutines.separateString((String) j.next(), " ");
-
- if (parts.size()==2) {
- smartNode.addDefinition(parser.preparseReferenceExpression((String) parts.get(0)), parser.preparseExpression((String) parts.get(1)));
- }
- }
- }
- else if (name.getLocalName().equalsIgnoreCase(CONDITION_ATTRIBUTE)) {
- smartNode.setCondition(parser.preparseBooleanExpression((String) entry.getValue()));
- }
- else if (name.getLocalName().equalsIgnoreCase(CONTENT_ATTRIBUTE)) {
- smartNode.setContent(parser.preparseStringExpression((String) entry.getValue()));
- }
- else if (name.getLocalName().equalsIgnoreCase(ERROR_ATTRIBUTE)) {
- smartNode.setError(parser.preparseStringExpression((String) entry.getValue()));
- }
- else if (name.getLocalName().equalsIgnoreCase(OMITTAG_ATTRIBUTE)) {
- if (((String) entry.getValue()).trim().length()==0)
- smartNode.setOmitTag(parser.preparseTRUE());
- else
- smartNode.setOmitTag(parser.preparseBooleanExpression((String) entry.getValue()));
- }
- else if (name.getLocalName().equalsIgnoreCase(REPLACE_ATTRIBUTE)) {
- smartNode.setOmitTag(parser.preparseTRUE());
- smartNode.setContent(parser.preparseStringExpression((String) entry.getValue()));
- }
- else if (name.getLocalName().equalsIgnoreCase(REPEAT_ATTRIBUTE)) {
- List parts = StringRoutines.separateString((String) entry.getValue(), " ");
-
- if (parts.size()==2) {
- smartNode.setRepeat(parser.preparseReferenceExpression((String) parts.get(0)), parser.preparseExpression((String) parts.get(1)));
- }
- }
- else if (name.getLocalName().equalsIgnoreCase(ATTRIBUTE_ATTRIBUTE)) {
- List attributes = StringRoutines.splitStringWithEscape((String) entry.getValue(), ';', '\\');
-
- Iterator j = attributes.iterator();
- while (j.hasNext()) {
- String value = (String) j.next();
- List parts = StringRoutines.separateString(value, " ");
-
- if (parts.size()==2) {
- smartNode.addModifiedAttribute((String) parts.get(0), parser.preparseExpression((String) parts.get(1)));
- }
- else {
- throw new XMLParserExc(ATTRIBUTE_ATTRIBUTE + " tag should have exactly 2 parts ("+value+")");
- }
- }
- }
- }
- }