git.iko.soy/typeable/xsd-parser
on master help sign in
Nillable element (#7)
commitbe6f2e92d3c6b381922957fa51821e8e57840da3 authorYuras <shumovichy@gmail.com> dateTue 11 Feb 2020, 15:38 (7 years ago) parenta440293
2 files changed+8
src/Xsd/Parser.hs+7 src/Xsd/Types.hs+1
src/Xsd/Parser.hs+7
@@ -107,11 +107,18 @@ parseElement c = handleNamespaces c $ do
107107
108108 qname <- makeTargetQName name
109109
110+ nillable <- case anAttribute "nillable" c of
111+ Nothing -> return False
112+ Just "true" -> return True
113+ Just "false" -> return False
114+ _ -> parseError c "Unexpected value of nillable attribute"
115+
110116 return Xsd.Element
111117 { Xsd.elementName = qname
112118 , Xsd.elementType = tp
113119 , Xsd.elementAnnotations = annotations
114120 , Xsd.elementOccurs = (minOccurs, maxOccurs)
121+ , Xsd.elementNillable = nillable
115122 }
116123
117124-- | Parse inline type, simple or complex
src/Xsd/Types.hs+1
@@ -61,6 +61,7 @@ data Element = Element
6161 { elementName :: QName
6262 , elementType :: RefOr Type
6363 , elementOccurs :: (Int, MaxOccurs)
64+ , elementNillable :: Bool
6465 , elementAnnotations :: [Annotation]
6566 }
6667 deriving (Show, Eq)