Kanonický tvar XML dokumentu

  • Canonical XML Version 1.0, W3C Recommendation 15 March 2001, http://www.w3.org/TR/xml-c14n

  • Smyslem je popsat kritéria (a algoritmy), které pomohou rozhodnout, zda jsou dva XML dokumenty ekvivalentní, lišící se pouze fyzickou reprezentací (entity, pořadí atributů, kódování znaků)

  • Kanonizace "setře" rozdíly mezi takovými dokumenty, k nimž se analyzátor "bude jistě chovat stejně", tj. z pohledu aplikace jsou totožné.

  • Použití kanonického tvaru je nutné např. u elektronického podpisu XML dat (při výpočtu hodnoty digest).

  • Bylo by možné nad XML dokumenty definovat i jiné relace ekvivalence než je Canonical XML.

  • Hlavní zásady:

    • kódování v UTF-8

    • zlomy řádků (CR, LF) jsou normalizovány podle algoritmu uvedeného v std. XML 1.0

    • hodnoty atributů jsou normalizovány

    • reference na znakové a parsované entity jsou nahrazeny jejich obsahem

    • CDATA sekce jsou nahrazeny jejich obsahem

    • hlavička "xml" a deklarace typu dokumentu jsou odstraněny

    • bílé znaky mimo kořenový element jsou normalizovány

    • jiné bílé znaky (vyjma normalizace zlomu řádků) jsou zachovány

    • hodnoty atributů jsou uvozeny "

    • speciální znaky v hodnotách atributů a textovém obsahu elementů jsou nahrazeny referencemi na entity

    • nadbytečné deklarace jmenných prostorů jsou z každého elementu odstraněny

    • implicitní hodnoty atributů jsou dodány do každého elementu (kde je to relevantní)

    • na pořadí atributů a deklarací jmenných prostorů se uplatní lexikografické řazení