Convert all Python scripts to use XML namespaces.
diff --git a/src/mesa/glapi/glX_XML.py b/src/mesa/glapi/glX_XML.py
index e48955e..81c94a5 100644
--- a/src/mesa/glapi/glX_XML.py
+++ b/src/mesa/glapi/glX_XML.py
@@ -230,8 +230,9 @@
 		gl_XML.glEnum.__init__(self, context, name, attrs)
 
 
-	def startElement(self, name, attrs):
-		if name == "size":
+	def startElementNS(self, name, qname, attrs):
+		[uri, true_name] = name
+		if true_name == "size":
 			[temp_n, c, mode] = self.process_attributes(attrs)
 
 			if temp_n == "Get":
@@ -247,7 +248,7 @@
 
 				self.context.glx_enum_functions[ n ].append( c, self.value, self.name )
 		else:
-			gl_XML.glEnum.startElement(self, context, name, attrs)
+			gl_XML.glEnum.startElementNS(self, name, qname, attrs)
 		return
 
 
@@ -311,7 +312,7 @@
 	can_be_large = 0
 
 	def __init__(self, context, name, attrs):
-		self.vectorequiv = attrs.get('vectorequiv', None)
+		self.vectorequiv = attrs.get((None, 'vectorequiv'), None)
 		self.counter = None
 		self.output = None
 		self.can_be_large = 0
@@ -331,19 +332,20 @@
 		return glXParameterIterator(self.fn_parameters, skip_output, max_order)
 
 		
-	def startElement(self, name, attrs):
+	def startElementNS(self, name, qname, attrs):
 		"""Process elements within a function that are specific to GLX."""
 
-		if name == "glx":
-			self.glx_rop = int(attrs.get('rop', "0"))
-			self.glx_sop = int(attrs.get('sop', "0"))
-			self.glx_vendorpriv = int(attrs.get('vendorpriv', "0"))
-			self.img_reset = attrs.get('img_reset', None)
+		[uri, true_name] = name
+		if true_name == "glx":
+			self.glx_rop = int(attrs.get((None, 'rop'), "0"))
+			self.glx_sop = int(attrs.get((None, 'sop'), "0"))
+			self.glx_vendorpriv = int(attrs.get((None, 'vendorpriv'), "0"))
+			self.img_reset = attrs.get((None, 'img_reset'), None)
 
 			# The 'handcode' attribute can be one of 'true',
 			# 'false', 'client', or 'server'.
 
-			handcode = attrs.get('handcode', "false")
+			handcode = attrs.get((None, 'handcode'), "false")
 			if handcode == "false":
 				self.server_handcode = 0
 				self.client_handcode = 0
@@ -365,11 +367,12 @@
 			self.reply_always_array   = gl_XML.is_attr_true( attrs, 'always_array' )
 			self.dimensions_in_reply  = gl_XML.is_attr_true( attrs, 'dimensions_in_reply' )
 		else:
-			gl_XML.glFunction.startElement(self, name, attrs)
+			gl_XML.glFunction.startElementNS(self, name, qname, attrs)
 
 
-	def endElement(self, name):
-		if name == "function":
+	def endElementNS(self, name, qname):
+		[uri, true_name] = name
+		if true_name == "function":
 			# Mark any function that does not have GLX protocol
 			# defined as "ignore".  This prevents bad things from
 			# happening when people add new functions to the GL
@@ -387,7 +390,7 @@
 
 				self.ignore = 1
 
-		return gl_XML.glFunction.endElement(self, name)
+		return gl_XML.glFunction.endElementNS(self, name, qname)
 
 
 	def append(self, tag_name, p):
@@ -664,8 +667,9 @@
 		self.glx_enum_functions = {}
 
 
-	def endElement(self, name):
-		if name == 'OpenGLAPI':
+	def endElementNS(self, name, qname):
+		[uri, true_name] = name
+		if true_name == 'OpenGLAPI':
 			# Once all the parsing is done, we have to go back and
 			# fix-up some cross references between different
 			# functions.
@@ -680,7 +684,7 @@
 					else:
 						raise RuntimeError("Could not find the vector equiv. function %s for %s!" % (f.name, f.vectorequiv))
 		else:
-			gl_XML.FilterGLAPISpecBase.endElement(self, name)
+			gl_XML.FilterGLAPISpecBase.endElementNS(self, name, qname)
 		return
 
 
diff --git a/src/mesa/glapi/glX_doc.py b/src/mesa/glapi/glX_doc.py
index dd96a59..ea90d53 100644
--- a/src/mesa/glapi/glX_doc.py
+++ b/src/mesa/glapi/glX_doc.py
@@ -268,7 +268,7 @@
 	dh = PrintGlxProtoText()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/glX_proto_send.py b/src/mesa/glapi/glX_proto_send.py
index 7c31b87..d78e07e 100644
--- a/src/mesa/glapi/glX_proto_send.py
+++ b/src/mesa/glapi/glX_proto_send.py
@@ -890,7 +890,7 @@
 		show_usage()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/glX_proto_size.py b/src/mesa/glapi/glX_proto_size.py
index cc28b89..5049545 100644
--- a/src/mesa/glapi/glX_proto_size.py
+++ b/src/mesa/glapi/glX_proto_size.py
@@ -246,8 +246,9 @@
 		self.size_functions = []
 
 
-	def endElement(self, name):
-		if name == "function":
+	def endElementNS(self, name, qname):
+		[uri, true_name] = name
+		if true_name == "function":
 			f = self.current_object
 			if f.glx_rop and not f.ignore and f.fn_alias == None and f.vectorequiv == None:
 
@@ -259,7 +260,7 @@
 							self.size_functions.append( f )
 							break
 
-		glX_XML.GlxProto.endElement(self, name)
+		glX_XML.GlxProto.endElementNS(self, name, qname)
 
 
 	def functionIterator(self):
@@ -533,7 +534,7 @@
 		show_usage()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_SPARC_asm.py b/src/mesa/glapi/gl_SPARC_asm.py
index c4afc4e..2623e1b 100644
--- a/src/mesa/glapi/gl_SPARC_asm.py
+++ b/src/mesa/glapi/gl_SPARC_asm.py
@@ -124,7 +124,7 @@
 		show_usage()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_XML.py b/src/mesa/glapi/gl_XML.py
index bb6ec2b..38ccc53 100644
--- a/src/mesa/glapi/gl_XML.py
+++ b/src/mesa/glapi/gl_XML.py
@@ -39,7 +39,7 @@
 	value is 'true', non-zero will be returned.  An exception will be
 	raised for any other value."""
 
-	value = attrs.get(name, "false")
+	value = attrs.get((None, name), "false")
 	if value == "true":
 		return 1
 	elif value == "false":
@@ -60,7 +60,7 @@
 		context.append(tag_name, self)
 		return
 	
-	def startElement(self, name, attrs):
+	def startElementNS(self, name, qname, attrs):
 		"""Generic startElement handler.
 		
 		The startElement handler is called for all elements except
@@ -70,7 +70,7 @@
 		twice."""
 		return
 
-	def endElement(self, name):
+	def endElementNS(self, name, qname):
 		"""Generic endElement handler.
 
 		Generic endElement handler.    Returns 1 if the tag containing
@@ -87,7 +87,7 @@
 		associated with an object, even the element that started the
 		object.  See the description of startElement an example."""
 
-		if name == self.tag_name:
+		if name == (None, self.tag_name):
 			return 1
 		else:
 			return 0
@@ -102,12 +102,12 @@
 	This class is not complete, and is not really used yet."""
 
 	def __init__(self, context, name, attrs):
-		self.value = int(attrs.get('value', "0x0000"), 0)
+		self.value = int(attrs.get((None, 'value'), "0x0000"), 0)
 
-		enum_name = "GL_" + attrs.get('name', None)
+		enum_name = "GL_" + attrs.get((None, 'name'), None)
 		glItem.__init__(self, name, enum_name, context)
 
-		temp = attrs.get('count', None)
+		temp = attrs.get((None, 'count'), None)
 		self.default_count = 0
 		if temp == "?":
 			self.default_count = -1
@@ -122,9 +122,9 @@
 
 
 	def process_attributes(self, attrs):
-		name = attrs.get('name', None)
+		name = attrs.get((None, 'name'), None)
 
-		temp = attrs.get('count', None)
+		temp = attrs.get((None, 'count'), None)
 		if temp == None:
 			c = self.default_count
 		else:
@@ -133,7 +133,7 @@
 			except Exception,e:
 				raise RuntimeError('Invalid count value "%s" for enum "%s" in function "%s" when an integer was expected.' % (temp, self.name, n))
 
-		mode_str = attrs.get('mode', "set")
+		mode_str = attrs.get((None, 'mode'), "set")
 		if mode_str == "set":
 			mode = 1
 		elif mode_str == "get":
@@ -148,10 +148,10 @@
 	"""Subclass of glItem for representing GL types."""
 
 	def __init__(self, context, name, attrs):
-		self.size = int(attrs.get('size', "0"))
-		self.glx_name = attrs.get('glx_name', "")
+		self.size = int(attrs.get((None, 'size'), "0"))
+		self.glx_name = attrs.get((None, 'glx_name'), "")
 
-		type_name = "GL" + attrs.get('name', None)
+		type_name = "GL" + attrs.get((None, 'name'), None)
 		glItem.__init__(self, name, type_name, context)
 
 
@@ -166,10 +166,10 @@
 	is_pointer = 0
 
 	def __init__(self, context, name, attrs):
-		p_name = attrs.get('name', None)
-		self.p_type_string = attrs.get('type', None)
+		p_name = attrs.get((None, 'name'), None)
+		self.p_type_string = attrs.get((None, 'type'), None)
 
-		temp = attrs.get('variable_param', None)
+		temp = attrs.get((None, 'variable_param'), None)
 		if temp:
 			self.count_parameter_list = temp.split( ' ' )
 		else:
@@ -185,7 +185,7 @@
 		# statement will throw an exception, and the except block will
 		# take over.
 
-		c = attrs.get('count', "0")
+		c = attrs.get((None, 'count'), "0")
 		try: 
 			self.p_count = int(c)
 			self.counter = None
@@ -193,27 +193,27 @@
 			self.p_count = 0
 			self.counter = c
 
-		self.count_scale = int(attrs.get('count_scale', "1"))
-			
+		self.count_scale = int(attrs.get((None, 'count_scale'), "1"))
+
 		self.is_counter = is_attr_true( attrs, 'counter' )
 		self.is_output  = is_attr_true( attrs, 'output' )
 
 
 		# Pixel data has special parameters.
 
-		self.width      = attrs.get('img_width',  None)
-		self.height     = attrs.get('img_height', None)
-		self.depth      = attrs.get('img_depth',  None)
-		self.extent     = attrs.get('img_extent', None)
+		self.width      = attrs.get((None, 'img_width'),  None)
+		self.height     = attrs.get((None, 'img_height'), None)
+		self.depth      = attrs.get((None, 'img_depth'),  None)
+		self.extent     = attrs.get((None, 'img_extent'), None)
 
-		self.img_xoff   = attrs.get('img_xoff',   None)
-		self.img_yoff   = attrs.get('img_yoff',   None)
-		self.img_zoff   = attrs.get('img_zoff',   None)
-		self.img_woff   = attrs.get('img_woff',   None)
+		self.img_xoff   = attrs.get((None, 'img_xoff'),   None)
+		self.img_yoff   = attrs.get((None, 'img_yoff'),   None)
+		self.img_zoff   = attrs.get((None, 'img_zoff'),   None)
+		self.img_woff   = attrs.get((None, 'img_woff'),   None)
 
-		self.img_format = attrs.get('img_format', None)
-		self.img_type   = attrs.get('img_type',   None)
-		self.img_target = attrs.get('img_target', None)
+		self.img_format = attrs.get((None, 'img_format'), None)
+		self.img_type   = attrs.get((None, 'img_type'),   None)
+		self.img_target = attrs.get((None, 'img_target'), None)
 
 		self.img_pad_dimensions = is_attr_true( attrs, 'img_pad_dimensions' )
 		self.img_null_flag      = is_attr_true( attrs, 'img_null_flag' )
@@ -351,19 +351,19 @@
 
 class glFunction( glItem ):
 	def __init__(self, context, name, attrs):
-		self.fn_alias = attrs.get('alias', None)
+		self.fn_alias = attrs.get((None, 'alias'), None)
 		self.fn_parameters = []
 		self.image = None
 		self.count_parameter_list = []
 		self.fn_return_type = "void"
 
-		temp = attrs.get('offset', None)
+		temp = attrs.get((None, 'offset'), None)
 		if temp == None or temp == "?":
 			self.fn_offset = -1
 		else:
 			self.fn_offset = int(temp)
 
-		fn_name = attrs.get('name', None)
+		fn_name = attrs.get((None, 'name'), None)
 		if self.fn_alias != None:
 			self.real_name = self.fn_alias
 		else:
@@ -380,19 +380,20 @@
 		return glParameterIterator(self.fn_parameters)
 
 
-	def startElement(self, name, attrs):
-		if name == "param":
+	def startElementNS(self, name, qname, attrs):
+		[uri, true_name] = name
+		if true_name == "param":
 			try:
-				self.context.factory.create(self, name, attrs)
+				self.context.factory.create(self, true_name, attrs)
 			except RuntimeError:
 				print "Error with parameter '%s' in function '%s'." \
-					% (attrs.get('name','(unknown)'), self.name)
+					% (attrs.get((None, 'name'),'(unknown)'), self.name)
 				raise
-		elif name == "return":
-			self.set_return_type(attrs.get('type', None))
+		elif true_name == "return":
+			self.set_return_type(attrs.get((None, 'type'), None))
 
 
-	def endElement(self, name):
+	def endElementNS(self, name, qname):
 		"""Handle the end of a <function> element.
 
 		At the end of a <function> element, there is some semantic
@@ -400,7 +401,8 @@
 		exceptions from being thrown elsewhere in the code.
 		"""
 
-		if name == "function":
+		[uri, true_name] = name
+		if true_name == "function":
 			for p in self.variable_length_parameters:
 				if p.counter:
 					counter = self.parameters_by_name[ p.counter ]
@@ -607,16 +609,21 @@
 			# offset, then we do not need to track it.  These are
 			# functions that don't have an assigned offset
 
-			if obj.fn_offset >= 0 or obj.fn_alias != None:
-				if obj.fn_offset >= 0:
-					index = obj.fn_offset
-				else:
-					index = self.next_alias
-					self.next_alias -= 1
+			if not self.functions_by_name.has_key(obj.name):
+				self.functions_by_name[obj.name] = obj
 
-				self.functions[index] = obj
+				if obj.fn_offset >= 0 or obj.fn_alias != None:
+					if obj.fn_offset >= 0:
+						index = obj.fn_offset
+					else:
+						index = self.next_alias
+						self.next_alias -= 1
 
-			self.functions_by_name[obj.name] = obj
+					self.functions[index] = obj
+			else:
+				# We should do some checking here to make
+				# sure the functions are an identical match.
+				pass
 
 		elif object_type == "type":
 			self.types[obj.name] = obj
@@ -624,7 +631,7 @@
 		return
 
 
-	def startElement(self, name, attrs):
+	def startElementNS(self, name, qname, attrs):
 		"""Start a new element in the XML stream.
 		
 		Starts a new element.  There are three types of elements that
@@ -640,24 +647,26 @@
 		additional XML data, GLX protocol information,  that the base
 		classes do not know about."""
 
-		if self.current_object != None:
-			self.current_object.startElement(name, attrs)
-		elif name == "category":
-			self.current_category = attrs.get('name', "")
-		elif name == "include":
-			self.next_include = attrs.get('name', "")
-		else:
-			self.current_object = self.factory.create(self, name, attrs)
+		[uri, true_name] = name
+		if uri is None:
+			if self.current_object != None:
+				self.current_object.startElementNS(name, qname, attrs)
+			elif true_name == "category":
+				self.current_category = attrs.get((None, 'name'), "")
+			elif true_name == "include":
+				self.next_include = attrs.get((None, 'name'), "")
+			else:
+				self.current_object = self.factory.create(self, true_name, attrs)
 		return
 
 
-	def endElement(self, name):
+	def endElementNS(self, name, qname):
 		if self.current_object != None:
-			if self.current_object.endElement(name):
+			if self.current_object.endElementNS(name, qname):
 				self.current_object = None
 		elif name == "include":
 			parser = make_parser()
-			parser.setFeature(feature_namespaces, 0)
+			parser.setFeature(feature_namespaces, 1)
 			parser.setContentHandler(self)
 
 			f = open(self.next_include)
diff --git a/src/mesa/glapi/gl_apitemp.py b/src/mesa/glapi/gl_apitemp.py
index d89440a..4c4bcd4 100644
--- a/src/mesa/glapi/gl_apitemp.py
+++ b/src/mesa/glapi/gl_apitemp.py
@@ -218,7 +218,7 @@
 	dh = PrintGlOffsets()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_enums.py b/src/mesa/glapi/gl_enums.py
index 2237b7d..177c95f 100644
--- a/src/mesa/glapi/gl_enums.py
+++ b/src/mesa/glapi/gl_enums.py
@@ -237,7 +237,7 @@
 	dh = PrintGlEnums()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_offsets.py b/src/mesa/glapi/gl_offsets.py
index f5bd7f4..95657b8 100644
--- a/src/mesa/glapi/gl_offsets.py
+++ b/src/mesa/glapi/gl_offsets.py
@@ -67,7 +67,7 @@
 	dh = PrintGlOffsets()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_procs.py b/src/mesa/glapi/gl_procs.py
index a9fdd18..b5d51b0 100644
--- a/src/mesa/glapi/gl_procs.py
+++ b/src/mesa/glapi/gl_procs.py
@@ -149,7 +149,7 @@
 	dh = PrintGlProcs( long_string )
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_table.py b/src/mesa/glapi/gl_table.py
index 49a8af7..30dcd41 100644
--- a/src/mesa/glapi/gl_table.py
+++ b/src/mesa/glapi/gl_table.py
@@ -84,7 +84,7 @@
 	dh = PrintGlTable()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)
diff --git a/src/mesa/glapi/gl_x86_asm.py b/src/mesa/glapi/gl_x86_asm.py
index 442069b..02dafa5 100644
--- a/src/mesa/glapi/gl_x86_asm.py
+++ b/src/mesa/glapi/gl_x86_asm.py
@@ -248,7 +248,7 @@
 		show_usage()
 
 	parser = make_parser()
-	parser.setFeature(feature_namespaces, 0)
+	parser.setFeature(feature_namespaces, 1)
 	parser.setContentHandler(dh)
 
 	f = open(file_name)