Open ondrej-smetana opened 2 months ago
Vyjádření garanta XML za ICT Unii: Zde si dovolím nesouhlasit s tím, že by byla definice typu jako takového problém. Např.: xscgen --integer=int ermsTypes.xsd vygeneruje všechny definice jako int. Vracet se v rozhraní zpět mi nepřijde logické. Většina dodavatelů má již definované rozhraní podle definice z roku 2023. Navíc, v době 64bitových procesorů se 32bitové definice jeví jako poněkud archaické a přikláněl bych se k zachování současné 64 bit definice.
Ve verzi standardu 2023 došlo ke změně definice elementů obsahujících číslo z xs:int na xs:integer. Tato zdánlivě nepatrná změna má poměrně velký dopad na podobu kódu generovaného z těchto schémat.
Jedná se totiž o jinak definované datové typy.
xs:int je definován jako 32bit integer s příslušným rozsahem:
xs:integer je definován jako obecné číslo s neomezeným rozsahem:
Pokud je element nadefinovaný jako xs:integer, nevygeneruje se do kódu jako integer, protože se předpokládá, že hodnota v xml může velikost integeru přesáhnout. Např. v Javě se defaultně takový element vygeneruje jako typ BigInteger. Nástroje v prostředí .NET dokonce takový element vygenerují jako String. Při práci s takto generovanými objekty je nutné numerické hodnoty zbytečně převádět.