diff -r 79de32ba3296 -r 89e065397ea6 src/xmlpatterns/schema/qxsdschemaresolver.cpp --- a/src/xmlpatterns/schema/qxsdschemaresolver.cpp Fri May 14 16:40:13 2010 +0300 +++ b/src/xmlpatterns/schema/qxsdschemaresolver.cpp Thu May 27 13:40:48 2010 +0300 @@ -632,7 +632,14 @@ } else { // 1.2 const XsdSimpleType::Ptr anonType(new XsdSimpleType()); - anonType->setCategory(complexBaseType->contentType()->simpleType()->category()); + XsdSimpleType::TypeCategory baseCategory = complexBaseType->contentType()->simpleType()->category(); + anonType->setCategory(baseCategory); + + if (baseCategory == XsdSimpleType::SimpleTypeList) { + const XsdSimpleType::Ptr baseSimpleType = complexBaseType->contentType()->simpleType(); + anonType->setItemType(baseSimpleType->itemType()); + } + anonType->setDerivationMethod(XsdSimpleType::DerivationRestriction); anonType->setWxsSuperType(complexBaseType->contentType()->simpleType()); anonType->setFacets(complexTypeFacets(complexType));