XML 架构。 Base64binary 类型与 String 类型

问题描述 投票:0回答:3

我需要从某个 XML 元素解码 Base64 字符串。

type="xs:base64binary"
定义的元素和
type="xs:string"
定义的元素有什么区别吗?一些 XSD 开发人员拒绝将编码字符串标记为 base64 二进制。如果没有区别那
type="xs:base64binary"
有什么用?

xml xsd base64
3个回答
37
投票

XSD 中的

base64Binary
string
之间肯定存在差异:

  • base64Binary表示以Base64编码的二进制数据。它的值空间是固定长度二进制八位组的集合。它是 词汇空间仅限于
    a-z
    A-Z
    0-9
    +
    /
    =
    ,加上 空白
  • string表示字符数据。它的值空间字符的有限长度序列的集合。它的词汇 空间不受限制,只能由 XML 组成 人物.

19
投票

如果我正确理解规格,则存在语义差异。

A

base64Binary
元素包含已编码为 base64 的任意二进制数据,这使得它基本上是一个字符串(或至少与字符串兼容)。

另一方面,字符串包含可打印字符,它们(通常)组成单词和句子(自然语言)。它们不能包含任意(二进制)数据,因为不允许使用某些字符。

您可以使用

base64Binary
来表示解码后的数据不适合人类消费,而
string
是可读/可打印的。


0
投票

我认为主要区别在于验证 XML。随机字符串不会通过 base64Binary 验证,而 base64Binary 内容将通过字符串验证。

如果我期望 XML 中包含 base64Binary 内容,并且不想要随机字符串。

© www.soinside.com 2019 - 2024. All rights reserved.