diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp
index 9a795422b0c..61d8a6dc347 100644
--- a/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp
+++ b/mozilla/parser/htmlparser/src/nsHTMLTokenizer.cpp
@@ -592,7 +592,10 @@ nsresult nsHTMLTokenizer::ConsumeTag(PRUnichar aChar,CToken*& aToken,nsScanner&
break;
default:
- if(nsCRT::IsAsciiAlpha(aChar)) {
+ // xml allows non ASCII tag names, consume as a start tag.
+ PRBool isXML=(mFlags & NS_IPARSER_FLAG_XML);
+ if(nsCRT::IsAsciiAlpha(aChar) ||
+ (isXML && (! nsCRT::IsAscii(aChar)))) {
// Get the original "<" (we've already seen it with a Peek)
aScanner.GetChar(oldChar);
result=ConsumeStartTag(aChar,aToken,aScanner,aFlushTokens);