Přispěl jsem k implementaci typu XML v PostgreSQL a pravděpodobně jsem napsal většinu dokumentace, kterou citujete.
Existuje několik důvodů, proč to tak v současnosti je:
- Standard SQL neurčuje žádný operátor porovnání pro typ
xml
. - V době, kdy byla implementace zahájena, nebylo kanonické XML široce používáno a srozumitelné (alespoň zúčastněnými lidmi, pravděpodobně).
- Tam, kde kanonizace XML nefunguje, existují určitá omezení. I když by se to v praxi mohlo objevit jen zřídka, vedlo by to k situaci, kdy některé hodnoty datového typu nelze porovnávat, což by vedlo například k problémům s indexováním. (Hodnotě NaN typů s plovoucí desetinnou čárkou je přiřazena pozice řazení z podobných důvodů.)
- Je stále diskutabilní, zda je srovnání kanonizací vhodné pro všechna použití a co uživatelé vždy chtějí.
Implementace funkce kanonizace XML pro volitelné použití by jistě byla vítána. Vlastně bych rád viděl samostatný xmlcanonical
typu, ale to by bylo o dost více práce.