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
6
A
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.