mmidy 00/02/24 12:15:11
Modified: src/org/apache/xalan/xslt ElemElement.java
Log:
Check that name is a valid attribute
Revision Changes Path
1.9 +18 -1 xml-xalan/src/org/apache/xalan/xslt/ElemElement.java
Index: ElemElement.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemElement.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ElemElement.java 2000/02/18 16:43:05 1.8
+++ ElemElement.java 2000/02/24 20:15:11 1.9
@@ -130,6 +130,14 @@
// Catch the exception this may cause. We don't want to stop
processing.
try{
ns = getNamespaceForPrefix(nsprefix);
+ // Check if valid QName. Assuming that if the prefix is defined,
+ // it is valid.
+ if ( indexOfNSSep+1 == elemName.length() ||
+ !isValidNCName(elemName.substring(indexOfNSSep + 1)))
+ {
+ processor.warn(XSLTErrorResources.WG_ILLEGAL_ATTRIBUTE_NAME, new
Object[]{elemName});
+ elemName = null;
+ }
}
catch(Exception ex)
{
@@ -137,7 +145,14 @@
ns = null;
processor.warn(XSLTErrorResources.WG_COULD_NOT_RESOLVE_PREFIX, new
Object[]{nsprefix});
}
+
}
+ // Check if valid QName
+ else if (elemName.length() == 0 || !isValidNCName(elemName))
+ {
+ processor.warn(XSLTErrorResources.WG_ILLEGAL_ATTRIBUTE_NAME, new
Object[]{elemName});
+ elemName = null;
+ }
// Only do this if name is valid
if(null != elemName && null != ns)
{
@@ -160,7 +175,9 @@
nsDecl, elemNameSpace);
}
m_prefix = prefix;
- }
+ }
+ if(indexOfNSSep >= 0)
+ elemName = elemName.substring(indexOfNSSep+1);
elemName = (m_prefix + ":"+elemName);
}
}