Provided by: libxml-compile-perl_1.63-3_all bug

NAME

       XML::Compile::Schema::BuiltInTypes - Define handling of built-in data-types

INHERITANCE

        XML::Compile::Schema::BuiltInTypes
          is a Exporter

SYNOPSIS

        # Not for end-users
        use XML::Compile::Schema::BuiltInTypes qw/%builtin_types/;

DESCRIPTION

       Different schema specifications specify different available types, but there is a lot over overlap.  The
       XML::Compile::Schema::Specs module defines the availability, but here the types are implemented.

       This implementation certainly does not try to be minimal in size: following the letter of the restriction
       rules and inheritance structure defined by the W3C schema specification would be too slow.

FUNCTIONS

   Real functions
       builtin_type_info($type)
           Returns  the  configuration  for  $type, which is a HASH.  Be aware that the information in this HASH
           will change over time without too much notice.  Implement regression-tests in this if you use it!

   The Types
       The functions named in this section are all used at compile-time by the translator.  At that moment, they
       will be placed in the kind-of opcode tree which will process the data at run-time.  You cannot call these
       functions yourself.

       XML::Compile will automatically format the value for you.  For instance, a  float  supplied  to  a  field
       defined  as  type  Integer will be converted to an integer. Data supplied to a field of type base64Binary
       will be encoded as Base64 for you: you shouldn't do the conversion yourself, you'll get double encoding!

       Any

       anyAtomicType()
       anySimpleType()
       anyType()
           Both any*Type built-ins can contain any kind of data.  Perl  decides  how  to  represent  the  passed
           values.

       error()

       Ungrouped types

       boolean()
           Contains "true", "false", 1 (is true), or 0 (is false).  When the writer sees a value equal to 'true'
           or 'false', those are used.  Otherwise, the trueth value is evaluated into '0' or '1'.

           The reader will return '0' (also when the XML contains the string 'false', to simplify the Perl code)
           or '1'.

       pattern()

       Big Integers

       Schema's  define  integer  types  which  are  derived  from  the  "decimal"  type.  These values can grow
       enormously large, and therefore can only be handled correctly using Math::BigInt.  When the translator is
       built with the "sloppy_integers" option, this will simplify (speed-up) the  produced  code  considerably:
       all integers then shall be between -2G and +2G.

       integer()
           An integer with an undertermined (but possibly large) number of digits.

       long()
           A little bit shorter than an integer, but still up-to 19 digits.

       negativeInteger()
       nonNegativeInteger()
       nonPositiveInteger()
       positiveInteger()
       unsignedInt()
           Just too long to fit in Perl's ints.

       unsignedLong()
           Value up-to 20 digits.

       Integers

       byte()
           Signed 8-bits value.

       int()
       short()
           Signed 16-bits value.

       unsignedByte()
           Unsigned 8-bits value.

       unsignedShort()
           unsigned 16-bits value.

       Floating-point

       decimal()
           Decimals are painful: they can be very large, much larger than Perl's internal floats.  Therefore, we
           need to use Math::BigFloat which are slow but nearly seamlessly invisible in the application.

       double()
           A floating-point value "m x 2**e", where m is an integer whose absolute value is less than 253, and e
           is an integer between −1074 and 971, inclusive.

           The  implementation  does  not  limited  the  double  in  size,  but maps it onto an precisionDecimal
           (Math::BigFloat) unless "sloppy_float" is set.

       float()
           A small floating-point value "m x 2**e" where m is an integer whose absolute value is less than  224,
           and e is an integer between −149 and 104, inclusive.

           The  implementation  does  not  limited  the  float  in  size,  but  maps it onto an precisionDecimal
           (Math::BigFloat) unless "sloppy_float" is set.

       precisionDecimal()
           Floating point value that closely corresponds to the floating-point decimal  datatypes  described  by
           IEEE/ANSI-754.

       Encoding

       base64Binary()
           In the hash, it will be kept as binary data.  In XML, it will be base64 encoded.

       hexBinary()
           In  the  hash,  it  will  be kept as binary data.  In XML, it will be hex encoded, two hex digits per
           byte.

       Dates

       date()
           A day, represented in localtime as "YYYY-MM-DD" or "YYYY-MM-DD[-+]HH:mm".  When a  decimal  value  is
           passed,  it  is interpreted as "time" value in UTC, and will be formatted as required.  When reading,
           the date string will not be parsed.

       dateTime()
           A moment, represented as "date T time tz?", where date is "YYYY-MM-DD", time is "HH:MM:SS",  and  the
           time-zone tz is either "-HH:mm", "+HH:mm", or "Z" for UTC.  The time-zone is optional, but can better
           be  used because the default is not defined in the standard. For that reason, the "dateTimeStamp" got
           introduced, which requires the timezone.

           When a decimal value is passed, it is interpreted as "time" value in UTC, and will  be  formatted  as
           required.     This    will    not    work    when    the    dateTime    extended   type   has   facet
           "explicitTimeZome="prohibited"".

           When reading, the date string will not be parsed.  Parsing timestamps is quite  expensive,  therefore
           not  preformed  automatically.    You  may  try  Time::Local  in  combination  with  Date::Parse,  or
           Time::Piece::ISO.  Be very careful with the timezone settings in your program, which effects "mktime"
           which is used by these implementations.  Best to run your application in GMT/UTC/UCT/Z.

       dateTimeStamp()
           Like "dateTime", but with required timezone which means that it is better defined. All other handling
           is the same.

       gDay()
           Format "---12" or "---12+09:00" (12 days, optional time-zone)

       gMonth()
           Format "--09" or "--09+07:00" (9 months, optional time-zone)

       gMonthDay()
           Format "--09-12" or "--09-12+07:00" (9 months 12 days, optional time-zone)

       gYear()
           Format 2006 or "2006+07:00" (year 2006, optional time-zone)

       gYearMonth()
           Format "2006-11" or "2006-11+07:00" (november 2006, optional time-zone)

       time()
           An moment in time, as can happen every day.

       Duration

       See XML::Compile::Util::duration2secs() to convert duration stamps into seconds.

       dayTimeDuration()
           Format "-PnDTnHnMnS", where optional starting "-" means negative.  The "P" is obligatory, and the "T"
           indicates start of a time part.  All other "n[DHMS]" are optional.

       duration()
           Format "-PnYnMnDTnHnMnS", where optional starting "-" means negative.  The "P" is obligatory, and the
           "T" indicates start of a time part.  All other "n[YMDHMS]" are optional.

       yearMonthDuration()
           Format "-PnYnMn", where optional starting "-" means negative.  The "P" is obligatory, the "n[YM]" are
           optional.

       Strings

       ID(, IDREF, IDREFS)
           A label, reference to a label, or set of references.

           PARTIAL IMPLEMENTATION: the validity of used characters is not checked.

       NCName(, ENTITY, ENTITIES)
           A name which contains no colons (a non-colonized name).

       Name()
       language()
           An RFC3066 language indicator.

       normalizedString()
           String where all sequence of white-spaces (including new-lines) are interpreted as one blank.  Blanks
           at beginning and the end of the string are ignored.

       string()
           (Usually utf8) string.

       token(, NMTOKEN, NMTOKENS)

       URI

       NOTATION()
           NOT IMPLEMENTED, so treated as string.

       QName()
           A qualified type name: a type name with optional prefix.  The prefix notation "prefix:type"  will  be
           translated into the "{$ns}type" notation.

           For  writers, this translation can only happen when the $ns is also in use on some other place in the
           message: the name-space declaration can not be added at run-time.  In other cases,  you  will  get  a
           run-time  error.   Play with XML::Compile::Schema::compile(prefixes), predefining evenything what may
           be used, setting the "used" count to 1.

       anyURI()
           You may pass a string or, for instance, an URI object which will be stringified into  an  URI.   When
           read, the data will not automatically be translated into an URI object: it may not be used that way.

       only in 1999 and 2000/10 schemas

       binary()
           Perl strings can contain any byte, also nul-strings, so can contain any sequence of bits.  Limited to
           byte length.

       timeDuration()
           'Old' name for duration().

       uriReference()
           Probably the same rules as anyURI().

SEE ALSO

       This  module  is  part  of  XML-Compile  distribution  version  1.63,  built  on  July 02, 2019. Website:
       http://perl.overmeer.net/xml-compile/

LICENSE

       Copyrights 2006-2019 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.

       This program is free software; you can redistribute it and/or modify it under  the  same  terms  as  Perl
       itself.  See http://dev.perl.org/licenses/

perl v5.36.0                                       2022-11-27             XML::Compile::S...a::BuiltInTypes(3pm)