XML canonical

Canonical XML descrie forma canonică a documentelor XML , care este menită să simplifice comparabilitatea a două astfel de documente. Din această cauză, Canonical XML Transformation elimină diferențele nesemnificative dintre documente. Fiecare document XML poate fi convertit în formă canonică (Canonical XML).

De exemplu, XML permite spațiile să apară în anumite locuri din eticheta de pornire , iar atributele pot fi specificate în orice ordine. Astfel de diferențe sunt foarte rar, dacă vreodată, au un sens. Din acest motiv, următoarele două forme sunt în general considerate echivalente:

    <p class="a" secure="1">

    <p     secure   = "1"
              class='a'    >

În timpul conversiei oricărui document XML în XML canonic, atributele sunt sortate în ordinea lor nominativă (alfabetic după nume) și spațiile și ghilimele sunt standardizate. Astfel, a doua formă ar fi convertită la prima formă.

Canonical XML specifică o serie de alte detalii, dintre care unele sunt enumerate aici:

  • UTF-8 codificare a caracterelor este utilizată
  • Capetele liniei sunt reprezentate de caracterul 0x0A (Linie nouă = linie nouă ),
  • Spațiile din valorile atributelor sunt standardizate,
  • Referințele entității sunt rezolvate
  • Secțiunile marcate ca CDATA sunt rezolvate,
  • elementele goale sunt <leer></leer>codificate cu etichete de început și de sfârșit , nu folosindu-le ca etichete goale <leer/>,
  • Atributele standard sunt specificate în mod explicit,
  • Declarațiile inutile ale spațiului de nume sunt șterse.

Conversia unui document în XML Canonical este idempotentă . Aceasta înseamnă că în timpul primei conversii, caracterele afișate se modifică în comparație cu originalul, dar nu se mai fac modificări în timpul conversiilor ulterioare.

Potrivit W3C , două documente pot fi considerate logic echivalente în contextul de utilizare dat dacă au aceeași formă canonică (cu excepția unor cazuri rare).

Cu toate acestea, în medii speciale, utilizatorii ar putea dori semantică specială care se află în afara identității logice generale cu care este asociat Canonical XML. De exemplu, un sistem de steganografie într-un document XML ar putea ascunde informații prin schimbarea spațiilor, ghilimelele atributelor și dispunerea acestora, utilizarea referințelor hexazecimale față de caracterele zecimale etc. Evident, convertirea unui astfel de fișier în Canonical XML va pierde această semantică specială. Cu toate acestea, fișierele XML care diferă în ceea ce privește utilizarea majusculelor față de minuscule sau cele care utilizează ortografie veche față de cele noi etc. Astfel de contexte sunt în afara scopului Canonical XML.

software

O implementare a Canonical XML poate fi găsită în programul xmllint, care face parte din gnome libxml2 și este disponibil și pentru Microsoft Windows.

Exemplu de aplicație:

xmllint --c14n SomeXml.xml > CanonicalVersionOf_SomeXml.xml

Vezi si

Link-uri web