public Tag decorate(Tag tag) {
Location location = tag.getLocation();
String namespace = tag.getNamespace();
String qName = tag.getQName().toLowerCase();
TagAttributeImpl tagNameAttr = null;
TagAttributeImpl tagTargetAttr = null;
List<TagAttribute> attrs = new ArrayList<TagAttribute>(Arrays.asList(tag.getAttributes().getAll()));
Collections.sort(attrs, new Comparator<TagAttribute>() {
public int compare(TagAttribute ta1, TagAttribute ta2) {
return ta1.getQName().compareTo(ta2.getQName());
}
});
if (StringUtils.isEmpty(namespace) && !HtmlDecorator.XhtmlNamespace.equals(namespace) && !reservedTags.contains(qName)) {
String name = qName;
if (headTags.contains(qName)) {
name = "output";
tagNameAttr = new TagAttributeImpl(location, namespace, QNAME, QNAME, qName);
tagTargetAttr = new TagAttributeImpl(location, namespace, "target", "target", "head");
} else if (bodyTags.contains(qName)) {
name = "tag";
tagNameAttr = new TagAttributeImpl(location, namespace, QNAME, QNAME, qName);
}
for (TagAttribute attr : attrs) {
if ("data-error".equals(attr.getQName())) {
tagNameAttr = new TagAttributeImpl(location, namespace, QNAME, QNAME, qName);
name = qName;
} else if ("data-label".equals(attr.getQName()) && !StringUtils.isEmpty(attr.getValue())) {
tagNameAttr = new TagAttributeImpl(location, namespace, QNAME, QNAME, qName);
name = qName;
} else if ("data-template".equals(attr.getQName())) {
tagNameAttr = new TagAttributeImpl(location, namespace, QNAME, QNAME, qName);
name = "html".equals(qName) ? "html" : "template";
} else if ("data-repeat".equals(attr.getQName())) {
tagNameAttr = new TagAttributeImpl(location, namespace, QNAME, QNAME, qName);
if (!"select".equals(name)) {
name = "repeat";
}
} else if ("target".equals(attr.getQName())) {
tagTargetAttr = null;
}
if (attr.getQName().startsWith("data-") && !attr.getQName().equals("data-rendered")) {
String replace = convertName(attr.getQName());
if (replace.matches(ATTRIBUTES)) {
attrs.set(attrs.indexOf(attr),
new TagAttributeImpl(location, attr.getNamespace(), replace, replace, attr.getValue()));
}
}
if ("id".equals(attr.getQName())) {
if (attr.getValue().contains("${")) {