	public static XSDatatype getTypeByName( String dataTypeName ) {
		XSDatatype dt = (XSDatatype)builtinType.get(dataTypeName);
		if(dt!=null)	return dt;
		try {
			if( dataTypeName.equals("float") )
				add( builtinType, FloatType.theInstance );
			else
			if( dataTypeName.equals("double") )
				add( builtinType, DoubleType.theInstance );
			else
			if( dataTypeName.equals("duration") )
				add( builtinType, DurationType.theInstance );
			else
			if( dataTypeName.equals("dateTime") )
				add( builtinType, DateTimeType.theInstance );
			else
			if( dataTypeName.equals("time") )
				add( builtinType, TimeType.theInstance );
			else
			if( dataTypeName.equals("date") )
				add( builtinType, DateType.theInstance );
			else
			if( dataTypeName.equals("gYearMonth") )
				add( builtinType, GYearMonthType.theInstance );
			else
			if( dataTypeName.equals("gYear") )
				add( builtinType, GYearType.theInstance );
			else
			if( dataTypeName.equals("gMonthDay") )
				add( builtinType, GMonthDayType.theInstance );
			else
			if( dataTypeName.equals("gDay") )
				add( builtinType, GDayType.theInstance );
			else
			if( dataTypeName.equals("gMonth") )
				add( builtinType, GMonthType.theInstance );
			else
			if( dataTypeName.equals("hexBinary") )
				add( builtinType, HexBinaryType.theInstance );
			else
			if( dataTypeName.equals("base64Binary") )
				add( builtinType, Base64BinaryType.theInstance );
			else
			if( dataTypeName.equals("anyURI") )
				add( builtinType, AnyURIType.theInstance );
			else
			if( dataTypeName.equals("entity") )
				add( builtinType, EntityType.theInstance );
			else
			if( dataTypeName.equals("language") )
				add( builtinType, LanguageType.theInstance );
			else
			if( dataTypeName.equals("ENTITIES") )
				add( builtinType, new ListType("ENTITIES",EntityType.theInstance) );
			else
			if( dataTypeName.equals("NMTOKENS") )
				add( builtinType, new ListType("NMTOKENS",NmtokenType.theInstance) );
			else
			if( dataTypeName.equals("NOTATION") )
				add( builtinType, new StringType("NOTATION", WhiteSpaceProcessor.theCollapse) );
			else
			if( dataTypeName.equals("nonPositiveInteger") )
				add( builtinType, NonPositiveIntegerType.theInstance );
			else
			if( dataTypeName.equals("unsignedLong") )
				add( builtinType, UnsignedLongType.theInstance );
			else
			if( dataTypeName.equals("unsignedInt") )
				add( builtinType, UnsignedIntType.theInstance );
			else
			if( dataTypeName.equals("unsignedShort") )
				add( builtinType, UnsignedShortType.theInstance );
			else
			if( dataTypeName.equals("unsignedByte") )
				add( builtinType, UnsignedByteType.theInstance );
		} catch( DatatypeException dte )	{
			throw new Error();
		}
		return (XSDatatype)builtinType.get(dataTypeName);
	}

	public static XSDatatype getTypeByName( String dataTypeName ) {
		XSDatatype dt = (XSDatatype)builtinType.get(dataTypeName);
		if(dt!=null)	return dt;
		try {
			if( dataTypeName.equals("float") )
				add( builtinType, FloatType.theInstance );
			else
			if( dataTypeName.equals("double") )
				add( builtinType, DoubleType.theInstance );
			else
			if( dataTypeName.equals("duration") )
				add( builtinType, DurationType.theInstance );
			else
			if( dataTypeName.equals("dateTime") )
				add( builtinType, DateTimeType.theInstance );
			else
			if( dataTypeName.equals("time") )
				add( builtinType, TimeType.theInstance );
			else
			if( dataTypeName.equals("date") )
				add( builtinType, DateType.theInstance );
			else
			if( dataTypeName.equals("gYearMonth") )
				add( builtinType, GYearMonthType.theInstance );
			else
			if( dataTypeName.equals("gYear") )
				add( builtinType, GYearType.theInstance );
			else
			if( dataTypeName.equals("gMonthDay") )
				add( builtinType, GMonthDayType.theInstance );
			else
			if( dataTypeName.equals("gDay") )
				add( builtinType, GDayType.theInstance );
			else
			if( dataTypeName.equals("gMonth") )
				add( builtinType, GMonthType.theInstance );
			else
			if( dataTypeName.equals("hexBinary") )
				add( builtinType, HexBinaryType.theInstance );
			else
			if( dataTypeName.equals("base64Binary") )
				add( builtinType, Base64BinaryType.theInstance );
			else
			if( dataTypeName.equals("anyURI") )
				add( builtinType, AnyURIType.theInstance );
			else
			if( dataTypeName.equals("ENTITY") )
				add( builtinType, EntityType.theInstance );
			else
			if( dataTypeName.equals("language") )
				add( builtinType, LanguageType.theInstance );
			else
			if( dataTypeName.equals("ENTITIES") )
				add( builtinType, new ListType("ENTITIES",EntityType.theInstance) );
			else
			if( dataTypeName.equals("NMTOKENS") )
				add( builtinType, new ListType("NMTOKENS",NmtokenType.theInstance) );
			else
			if( dataTypeName.equals("NOTATION") )
				add( builtinType, new StringType("NOTATION", WhiteSpaceProcessor.theCollapse) );
			else
			if( dataTypeName.equals("nonPositiveInteger") )
				add( builtinType, NonPositiveIntegerType.theInstance );
			else
			if( dataTypeName.equals("unsignedLong") )
				add( builtinType, UnsignedLongType.theInstance );
			else
			if( dataTypeName.equals("unsignedInt") )
				add( builtinType, UnsignedIntType.theInstance );
			else
			if( dataTypeName.equals("unsignedShort") )
				add( builtinType, UnsignedShortType.theInstance );
			else
			if( dataTypeName.equals("unsignedByte") )
				add( builtinType, UnsignedByteType.theInstance );
		} catch( DatatypeException dte )	{
			throw new Error();
		}
		return (XSDatatype)builtinType.get(dataTypeName);
	}
