схема XML. Base64binary тип ВС строки

мне нужно декодировать строку Base64 из некоторого элемента XML. Есть ли разница между элементом, определенным type="xs:base64binary" и определена type="xs:string"? Некоторые разработчики XSD отказываются отмечать закодированные строки как base64binary. Если нет разницы, зачем type="xs:base64binary"?

2 ответов


Если я правильно понял спецификации правильно, есть семантическая разница.

A base64Binary элемент содержит произвольные двоичные данные, которые были закодированы как base64, что делает его в основном строкой (или, по крайней мере, Строковой совместимой).

С другой стороны, строки содержат печатаемые символы, которые (обычно) составляют слова и предложения (естественный язык). Они не могут содержать произвольные (двоичные) данные, поскольку некоторые символы не являются допустимый.

можно использовать base64Binary указать, что декодированные данные не подходят для потребления человеком, где as string для чтения/печати.


определенно есть разница между base64Binary и string в XSD:

  • base64Binary представляет двоичные данные, закодированные в Base64. Его значение - это набор двоичных октетов фиксированной длины. Свой лексическое пространство ограничено a-z, A-Z, 0-9, +, /, = плюс пробел.
  • строка представляет собой символьные данные. Его значение - это множество последовательностей конечной длины символы. Ее лексико пространство безгранично за пределами необходимости состоять из XML-файле персонажи.