[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/khtml/dom
From:       David Faure <faure () kde ! org>
Date:       2003-06-24 22:14:27
[Download RAW message or body]

CVS commit by faure: 

This I can "forward port" to HEAD. The rest is... well, such a mess.


  M +26 -13    dom_element.cpp   1.41


--- kdelibs/khtml/dom/dom_element.cpp  #1.40:1.41
@@ -344,31 +344,44 @@ CSSStyleDeclaration Element::style()
 }
 
-bool Element::khtmlValidAttrName(const DOMString &/*name*/)
+bool Element::khtmlValidAttrName(const DOMString &name)
 {
-    // ###
+    // Check if name is valid
+    // http://www.w3.org/TR/2000/REC-xml-20001006#NT-Name
+    DOMStringImpl* _name = name.implementation();
+    QChar ch = _name->s[0];
+    if ( !ch.isLetter() && ch != '_' && ch != ':' )
+        return false; // first char isn't valid
+    for ( uint i = 0; i < _name->l; ++i )
+    {
+        ch = _name->s[i];
+        if ( !ch.isLetter() && !ch.isDigit() && ch != '.'
+             && ch != '-' && ch != '_' && ch != ':'
+             && ch.category() != QChar::Mark_SpacingCombining
+             /* no idea what "extender is" */ )
+            return false;
+    }
     return true;
 }
 
-bool Element::khtmlValidPrefix(const DOMString &/*name*/)
+bool Element::khtmlValidPrefix(const DOMString &name)
 {
-    // ###
-    return true;
+    return khtmlValidAttrName(name);
 }
 
-bool Element::khtmlValidQualifiedName(const DOMString &/*name*/)
+bool Element::khtmlValidQualifiedName(const DOMString &name)
 {
-    // ###
-    return true;
+    return khtmlValidAttrName(name);
 }
 
-bool Element::khtmlMalformedQualifiedName(const DOMString &/*name*/)
+bool Element::khtmlMalformedQualifiedName(const DOMString &name)
 {
-    // ###
-    return false;
+    // #### Not clearly defined in the DOM spec...
+    // But we know for sure that a null qualified name is malformed
+    return name.isNull();
 }
 
 bool Element::khtmlMalformedPrefix(const DOMString &/*name*/)
 {
-    // ###
+    // ####
     return false;
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic