private URTSimpleType ParseSimpleType(URTNamespace parsingNamespace, String typeName)
{
Util.Log("SdlParser.ParseSimpleType NS "+parsingNamespace+" typeName "+typeName);
// Lookup the name of the type and the base type from which it derives
if(typeName == null)
typeName = LookupAttribute(s_nameString, null, true);
URTSimpleType parsingSimpleType = parsingNamespace.LookupSimpleType(typeName);
if(parsingSimpleType == null)
{
parsingSimpleType = new URTSimpleType(typeName, parsingNamespace.Namespace,
parsingNamespace.EncodedNS, typeName != null);
String baseType = LookupAttribute(s_baseString, null, false);
if(!MatchingStrings(baseType, s_emptyString))
{
String baseNS = ParseQName(ref baseType);
parsingSimpleType.Extends(baseType, baseNS);
}
parsingNamespace.AddSimpleType(parsingSimpleType);
int curDepth = _XMLReader.Depth;
ReadNextXmlElement();
int enumFacetNum = 0;
string elementName;
while(_XMLReader.Depth > curDepth)
{
elementName = _XMLReader.LocalName;
// The only facet we currently support is enumeration
if(MatchingStrings(elementName, s_enumerationString))
{
ParseEnumeration(parsingSimpleType, enumFacetNum);
++enumFacetNum;
}
else if(MatchingStrings(elementName, s_encodingString))
{
ParseEncoding(parsingSimpleType);
}
else
{
SkipXmlElement();
}
}
}
else
{
SkipXmlElement();
}
return(parsingSimpleType);
}