Index: src/backend/utils/adt/xml.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/adt/xml.c,v
retrieving revision 1.62
diff -u -3 -p -r1.62 xml.c
--- src/backend/utils/adt/xml.c	27 Nov 2007 18:13:01 -0000	1.62
+++ src/backend/utils/adt/xml.c	28 Nov 2007 10:48:21 -0000
@@ -2984,12 +2984,14 @@ map_sql_type_to_xmlschema_type(Oid typeo
 			case BPCHAROID:
 			case VARCHAROID:
 			case TEXTOID:
+				appendStringInfo(&result,
+								 "  <xsd:restriction base=\"xsd:string\">\n");
 				if (typmod != -1)
 					appendStringInfo(&result,
-								  "  <xsd:restriction base=\"xsd:string\">\n"
-									 "    <xsd:maxLength value=\"%d\"/>\n"
-									 "  </xsd:restriction>\n",
+									 "    <xsd:maxLength value=\"%d\"/>\n",
 									 typmod - VARHDRSZ);
+				appendStringInfo(&result,
+								 "  </xsd:restriction>\n");
 				break;
 
 			case BYTEAOID:
@@ -2997,6 +2999,7 @@ map_sql_type_to_xmlschema_type(Oid typeo
 								 "  <xsd:restriction base=\"xsd:%s\">\n"
 								 "  </xsd:restriction>\n",
 				xmlbinary == XMLBINARY_BASE64 ? "base64Binary" : "hexBinary");
+				break;
 
 			case NUMERICOID:
 				if (typmod != -1)
