@@ -23,6 +23,7 @@ where
2323import qualified Data.Char as Char
2424import Data.Text (Text)
2525import qualified Data.Text as Text
26+import Data.Maybe
2627import Data.Set (Set)
2728import qualified Data.Set as Set
2829import Data.Map (Map)
@@ -156,14 +157,18 @@ allFields (Xsd.TypeComplex t) =
156157 case Xsd.complexContent t of
157158 Xsd.ContentPlain c ->
158159 case Xsd.plainContentModel c of
159− Just (Xsd.Sequence es) -> map Xsd.elementName es
160+ Just (Xsd.Sequence es) -> mapMaybe elementName es
160161 _ -> []
161162 Xsd.ContentSimple _ -> []
162163 Xsd.ContentComplex (Xsd.ComplexContentExtension e) ->
163164 case Xsd.complexExtensionModel e of
164− Just (Xsd.Sequence es) -> map Xsd.elementName es
165+ Just (Xsd.Sequence es) -> mapMaybe elementName es
165166 _ -> []
166167 Xsd.ContentComplex Xsd.ComplexContentRestriction -> []
168+ where
169+ elementName = Xsd.refOr
170+ (const Nothing)
171+ (Just . Xsd.elementName)
167172
168173-- | Prefix field name with based on the type name
169174makePrefixedField :: Text -> Xsd.QName -> Text