xml - example - xsd base64binary c#
Esquema XML. Tipo Base64binary vs Tipo de cadena (2)
Necesito decodificar una cadena de Base64 de algún elemento XML. ¿Hay alguna diferencia entre un elemento definido por type="xs:base64binary"
y un elemento definido por type="xs:string"
? Algunos desarrolladores de XSD se niegan a marcar cadenas codificadas como base64binary. Si no hay diferencia, ¿para qué sirve type="xs:base64binary"
?
Definitivamente hay una diferencia entre base64Binary
y string
en XSD:
- base64Binary representa datos binarios codificados en Base64. Su espacio de valor es el conjunto de octetos binarios de longitud fija. Su espacio léxico está limitado a
az
,AZ
,0-9
,+
,/
,=
, más espacios en blanco . - cadena representa datos de caracteres. Su espacio de valor es el conjunto de secuencias de caracteres de longitud finita. Su espacio léxico no está restringido más allá de tener que consistir en caracteres XML .
Si entiendo las especificaciones correctamente, hay una diferencia semántica.
Un elemento base64Binary
contiene datos binarios arbitrarios que se han codificado como base64, lo que básicamente lo convierte en una cadena (o al menos compatible con cadenas).
Por otro lado, las cadenas contienen caracteres imprimibles, que (normalmente) componen palabras y oraciones (lenguaje natural). No pueden contener datos arbitrarios (binarios) porque ciertos caracteres no están permitidos.
Puede usar base64Binary
para indicar que los datos decodificados no son aptos para el consumo humano, mientras que la string
es legible / imprimible.