Implement new utility functions for testing validity of name and token characters.
diff --git a/tinyxml2.h b/tinyxml2.h
index 0f8e9ad..698412a 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -464,6 +464,19 @@
     static bool IsWhiteSpace( char p )					{

         return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );

     }

+    

+    inline static bool IsNameStartChar( unsigned char ch ) {

+        return ( ( ch < 128 ) ? isalpha( ch ) : 1 )

+               || ch == ':'

+               || ch == '_';

+    }

+    

+    inline static bool IsNameChar( unsigned char ch ) {

+        return IsNameStartChar( ch )

+               || isdigit( ch )

+               || ch == '.'

+               || ch == '-';

+    }

 

     inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX )  {

         int n = 0;

@@ -480,15 +493,10 @@
         }

         return false;

     }

+    

     inline static int IsUTF8Continuation( const char p ) {

         return p & 0x80;

     }

-    inline static int IsAlphaNum( unsigned char anyByte )	{

-        return ( anyByte < 128 ) ? isalnum( anyByte ) : 1;

-    }

-    inline static int IsAlpha( unsigned char anyByte )		{

-        return ( anyByte < 128 ) ? isalpha( anyByte ) : 1;

-    }

 

     static const char* ReadBOM( const char* p, bool* hasBOM );

     // p is the starting location,