some db code rewriting
[mir.git] / source / mir / util / xml / html / HTMLScanner.java
index e956ae1..816c8fa 100755 (executable)
@@ -30,6 +30,7 @@ public class HTMLScanner {
     while (!reader.isAtEnd()) {
       char c = reader.peek();
 
+      // TODO: << should result in the first < to be regarded as CDATA
       if (c != '<')
         readCData();
       else {
@@ -67,6 +68,20 @@ public class HTMLScanner {
         (aCharacter == ':');
   }
 
+  private boolean isValidUnQuotedAttributeCharacter(char aCharacter) {
+    int type = Character.getType(aCharacter);
+
+    return
+        (type == Character.UPPERCASE_LETTER)  ||
+        (type == Character.LOWERCASE_LETTER)  ||
+        (type == Character.DECIMAL_DIGIT_NUMBER)  ||
+        (aCharacter == '.') ||
+        (aCharacter == '#') ||
+        (aCharacter == '-') ||
+        (aCharacter == '_') ||
+        (aCharacter == ':');
+  }
+
   private void skipWhiteSpace() throws IOException {
     while (!reader.isAtEnd() && Character.isWhitespace(reader.peek())) {
       reader.get();
@@ -101,8 +116,7 @@ public class HTMLScanner {
 
     if (result.length()==0)
       return null;
-    else
-      return result.toString();
+               return result.toString();
   }
 
   private String getAttributeValue() throws IOException {
@@ -122,7 +136,7 @@ public class HTMLScanner {
           reader.get();
       }
       else {
-        while (!reader.isAtEnd() && isValidTagNameCharacter(reader.peek())) {
+        while (!reader.isAtEnd() && isValidUnQuotedAttributeCharacter(reader.peek())) {
           result.append(reader.get());
         }
       }
@@ -183,7 +197,11 @@ public class HTMLScanner {
             reader.get();
             if (!reader.isAtEnd() && reader.peek()=='-') {
               reader.get();
-              break;
+              if (!reader.isAtEnd() && reader.peek()=='>') {
+                reader.get();
+                break;
+              }
+              result.append('-');
             }
             result.append('-');
           }
@@ -200,9 +218,7 @@ public class HTMLScanner {
 
         return;
       }
-      else {
-        result.append('-');
-      }
+                       result.append('-');
     }
 
     while (!reader.isAtEnd() && reader.peek()!='>') {