/****************************************************************************** * Copyright (c) 2004, 2014 Ericsson AB * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Zoltan Jasz - initial implementation and initial documentation * Abhishek Gupta * Attila Balasko * Endre Kulcsar * Gabor Bettesch * Gabor Szalai * Janos Kovesdi * Sandor Palugyai * Tibor Csondes ******************************************************************************/ // // File: XSD.ttcn // Rev: R9A // Prodnr: CNL 113 368 // //////////////////////////////////////////////////////////////////////////////// module XSD { import from UsefulTtcn3Types all; //These constants are used in the XSD date/time type definitions const charstring dash := "-", cln := ":", year := "(0(0(0[1-9]|[1-9][0-9])|[1-9][0-9][0-9])|[1-9][0-9][0-9][0-9])", yearExpansion := "(-([1-9][0-9]#(0,))#(,1))#(,1)", month := "(0[1-9]|1[0-2])", dayOfMonth := "(0[1-9]|[12][0-9]|3[01])", hour := "([01][0-9]|2[0-3])", minute := "([0-5][0-9])", second := "([0-5][0-9])", sFraction := "(.[0-9]#(1,))#(,1)", endOfDayExt := "24:00:00(.0#(1,))#(,1)", nums := "[0-9]#(1,)", ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)", durTime := "(T[0-9]#(1,)"& "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& "S|"& ".[0-9]#(1,)S))" //anySimpleType type XMLCompatibleString AnySimpleType with { variant "XSD:anySimpleType"; }; //anyType; type record AnyType { record of String attr, record of String elem_list } with { variant "XSD:anyType"; variant (attr) "anyAttributes"; variant (elem_list) "anyElement"; }; // String types type XMLCompatibleString String with { variant "XSD:string"; }; type XMLStringWithNoCRLFHT NormalizedString with { variant "XSD:normalizedString"; }; type NormalizedString Token with { variant "XSD:token"; }; type XMLStringWithNoWhitespace Name with { variant "XSD:Name"; }; type XMLStringWithNoWhitespace NMTOKEN with { variant "XSD:NMTOKEN"; }; type Name NCName with { variant "XSD:NCName"; }; type NCName ID with { variant "XSD:ID"; }; type NCName IDREF with { variant "XSD:IDREF"; }; type NCName ENTITY with { variant "XSD:ENTITY"; }; type octetstring HexBinary with { variant "XSD:hexBinary"; }; type octetstring Base64Binary with { variant "XSD:base64Binary"; }; type XMLStringWithNoCRLFHT AnyURI with { variant "XSD:anyURI"; }; type charstring Language (pattern "[a-zA-Z]#(1,8)(-\w#(1,8))#(0,)") with { variant "XSD:language"; }; // Integer types type integer Integer with { variant "XSD:integer"; }; type integer PositiveInteger (1 .. infinity) with { variant "XSD:positiveInteger"; }; type integer NonPositiveInteger (-infinity .. 0) with { variant "XSD:nonPositiveInteger"; }; type integer NegativeInteger (-infinity .. -1) with { variant "XSD:negativeInteger"; }; type integer NonNegativeInteger (0 .. infinity) with { variant "XSD:nonNegativeInteger"; }; type longlong Long with { variant "XSD:long"; }; type unsignedlonglong UnsignedLong with { variant "XSD:unsignedLong"; }; type long Int with { variant "XSD:int"; }; type unsignedlong UnsignedInt with { variant "XSD:unsignedInt"; }; type short Short with { variant "XSD:short"; }; type unsignedshort UnsignedShort with { variant "XSD:unsignedShort"; }; type byte Byte with { variant "XSD:byte"; }; type unsignedbyte UnsignedByte with { variant "XSD:unsignedByte"; }; // Float types type float Decimal with { variant "XSD:decimal"; }; type IEEE754float Float with { variant "XSD:float"; }; type IEEE754double Double with { variant "XSD:double"; }; // Time types type charstring Duration (pattern "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})") with { variant "XSD:duration"; }; type charstring DateTime (pattern "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}T({hour}{cln}{minute}{cln}{second}" & "{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ) with { variant "XSD:dateTime"; }; type charstring Time (pattern "({hour}{cln}{minute}{cln}{second}{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ) with { variant "XSD:time"; }; type charstring Date (pattern "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) with { variant "XSD:date"; }; type charstring GYearMonth (pattern "{yearExpansion}{year}{dash}{month}{ZorTimeZoneExt}" ) with { variant "XSD:gYearMonth"; }; type charstring GYear (pattern "{yearExpansion}{year}{ZorTimeZoneExt}" ) with { variant "XSD:gYear"; }; type charstring GMonthDay (pattern "{dash}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) with { variant "XSD:gMonthDay"; }; type charstring GDay (pattern "{dash}{dash}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) with { variant "XSD:gDay"; }; type charstring GMonth (pattern "{dash}{dash}{month}{ZorTimeZoneExt}" ) with { variant "XSD:gMonth"; }; // Sequence types type record of NMTOKEN NMTOKENS with { variant "XSD:NMTOKENS"; }; type record of IDREF IDREFS with { variant "XSD:IDREFS"; }; type record of ENTITY ENTITIES with { variant "XSD:ENTITIES"; }; type record QName { AnyURI uri optional, NCName name } with { variant "XSD:QName"; }; // Boolean type type boolean Boolean with { variant "XSD:boolean"; }; //TTCN-3 type definitions supporting the mapping of W3C XML Schema built-in datatypes type utf8string XMLCompatibleString ( char(0,0,0,9)..char(0,0,0,9), char(0,0,0,10)..char(0,0,0,10), char(0,0,0,12)..char(0,0,0,12), char(0,0,0,32)..char(0,0,215,255), char(0,0,224,0)..char(0,0,255,253), char(0,1,0,0)..char(0,16,255,253) ) type utf8string XMLStringWithNoWhitespace ( char(0,0,0,33)..char(0,0,215,255), char(0,0,224,0)..char(0,0,255,253), char(0,1,0,0)..char(0,16,255,253) ) type utf8string XMLStringWithNoCRLFHT ( char(0,0,0,32)..char(0,0,215,255), char(0,0,224,0)..char(0,0,255,253), char(0,1,0,0)..char(0,16,255,253) ) } with{ encode "XML" }