2015-12-22 56 views
6

Potrzebuję rozszyfrować ciąg Base64 z jakiegoś elementu XML. Czy istnieje jakaś różnica między elementem zdefiniowanym przez type="xs:base64binary" a elementem zdefiniowanym przez type="xs:string"? Niektórzy twórcy XSD odmawiają zakodowania zakodowanych ciągów jako base64binary. Jeśli nie ma różnicy, jaki jest pożytek z type="xs:base64binary"?Schemat XML. Typ Base64binary vs Typ String

Odpowiedz

8

Jeśli dobrze rozumiem, the specs, istnieje różnica semantyczna.

Element base64Binary zawiera dowolne, binarne dane zakodowane jako base64, co powoduje, że jest to w zasadzie ciąg (lub co najmniej zgodny z ciągami znaków).

Z drugiej strony, ciągi zawierają znaki drukowalne, które (zazwyczaj) składają się na słowa i zdania (język naturalny). Nie mogą zawierać danych arbitralnych (binarnych), ponieważ niektóre znaki nie są dozwolone.

Możesz użyć base64Binary, aby wskazać, że odkodowane dane nie są odpowiednie do spożycia przez ludzi, gdzie jako string można je odczytać/wydrukować.

14

Tam na pewno jest różnica między base64Binary i string w XSD:

  • base64Binary reprezentuje dane binarne zakodowane w base64. Jego value space jest zbiorem binarnych oktetów o stałej długości. Jego leksykalne przestrzeń jest ograniczona do a-z, A-Z, 0-9, +, /, = plus whitespace.
  • string reprezentuje dane znakowe. Jego value space jest zbiorem skończonej długości sekwencji characters. Jego leksykalna przestrzeń jest pozbawiona ograniczeń i musi składać się z XML characters.