2015-12-22 26 views
6

Devo decodificare una stringa Base64 da qualche elemento XML. C'è qualche differenza tra un elemento definito da type="xs:base64binary" e un elemento definito da type="xs:string"? Alcuni sviluppatori XSD rifiutano di contrassegnare le stringhe codificate come base64binary. Se non c'è differenza, qual è l'uso di type="xs:base64binary"?Schema XML. Base64binary type vs String type

risposta

8

Se capisco correttamente the specs, c'è una differenza semantica.

Un elemento base64Binary contiene dati binari arbitrari che sono stati codificati come base64, il che lo rende fondamentalmente una stringa (o almeno una stringa compatibile).

D'altra parte, le stringhe contengono caratteri stampabili, che (di solito) costituiscono parole e frasi (linguaggio naturale). Non possono contenere dati arbitrari (binari), poiché alcuni caratteri non sono consentiti.

È possibile utilizzare base64Binary per indicare che i dati decodificati non sono adatti al consumo umano, dove come string è leggibile/stampabile.

14

V'è sicuramente una differenza tra base64Binary e string in XSD:

  • base64Binary rappresenta dati binari codificati in Base64. Il suo value space è l'insieme di ottetti binari a lunghezza fissa. La sua spazio lessicale è limitata a a-z, A-Z, 0-9, +, /, =, più whitespace.
  • string rappresenta i dati dei caratteri. Il suo value space è l'insieme delle sequenze di lunghezza finita di characters. Lo spazio lessicale non è vincolato oltre a essere costituito da XML characters.