Mapeando os tipos de dados de esquema XML para declarações de dados Enterprise PL/I

Esta seção descreve como os tipos de dados primitivos e derivados integrados do XSD são mapeados para declarações de dados PL/I no cenário WSDL2PLI.

Os tipos de dados do esquema XML se encaixam em uma das duas categorias: primitivo ou derivado. Um tipo de dados derivado é criado estendendo um tipo de dados primitivo ou estendido existente. Por exemplo, xsd:integer é um tipo derivado integrado que é derivado do tipo de dados primitivo integrado xsd:decimal (xsd:integer é um xsd:decimal com a máscara fractionDigits configurada como 0).

Um tipo de dados derivado pode ser criado configurando restrições nas máscaras do tipo de dados de origem. Ambos os tipos de dados integrados primitivo e derivado podem ser estendidos por esse tipo de restrição para criar definições de tipos simples reutilizáveis customizados.
Nota: Uma descrição completa de como o XML Schema pode ser usado para definir a estrutura e o layout de um documento XML está na especificação padrão XML Schema W3C Parte 1: Estruturas Segunda Edição. Informações sobre como especificar e restringir os dados presentes em um documento XML podem ser encontradas no Esquema XML de especificação padrão W3C Parte 2: Datatypes Second Edition.
As tabelas a seguir descrevem as declarações de dados Enterprise PL/I que o componente WSDL2PLI gera para cada tipo de dados primitivo e derivado integrado do SXD.
Observação: as informações desta seção também se aplicam a xsd:simpleTypes definidos pelo usuário.

Tabela 1. XSD para PL/I: Tipos de dados booleanos, sequenciais e relacionados, tipos de dados de data e hora
Tipo de dado integrado XSD: Declaração de dados Enterprise PL/I:
base64Binary
(n) BIT(8) ALINHADO
'
se a faceta xs:length for especificada:
n = xs:/@value;
'
else if xs:maxLength facet is specified:
n = xs:/@value;
'
else if xs:minLength facet is specified:
n = max(xs:minLength/@value, WSDL2ELSSpec/@defaultBase64BinaryLength)
'
else
n = WSDL2ELSSpec/@defaultBase64BinaryLength
Boolean
  BIT (1) ALINHADO

Comentários:
As seguintes máscaras não são usadas: whiteSpace e padrão.
  sequência
normalizedString
token
nome
NMTOKEN
linguagem
NCName
ID
IDREF
anyURL
QName
NOTATION.
se xs:length for especificado:
n = min(xs:/@value, [32767|16383])
s = size([CHAR|WCHAR](n))
'
if s > size(OFFSET) and
n > WSDL2ELSSpec/@inlineStringLengthLimit:
'
" OFFSET(pool) LOCATES([CHAR|WCHAR](n))"
'
else
'
" [CHAR|WCHAR](n) "
'
else if xs:minLength and xs:maxLength are specified:
n = min(max(xs:minLength/@value, xs:maxLength/@value), [32767|16383])
s = size([CHAR|WCHAR](n) VARYING)
'
if s > size(OFFSET) and '
n > WSDL2ELSSpec/@inlineStringLengthLimit:
'
" OFFSET(pool) LOCATES([CHAR|WCHAR](n)VARYING)"
'
else
'
" CHAR(n) VARYING"
'
else if xs:enumeration facet is specified:
n = min(max(strlen(enumeration[*])),[32767|16383])
s = size([CHAR|WCHAR](n) VARYING)
'
if s > size(OFFSET) and
n > WSDL2ELSSpec/@inlineStringLengthLimit:
'
" OFFSET(pool) LOCATES([CHAR|WCHAR](n)VARYING)"
'
else
'
" [CHAR|WCHAR](n) VARYING"
'
else
n = minWSDL2ELSSpec/@defaultCharMaxLength,[32767|16383])
s = size([CHAR|WCHAR](n) VARYING)
'
if s > size(OFFSET) and
n > WSDL2ELSSpec/@inlineStringLengthLimit:
'
" OFFSET(pool) LOCATES([CHAR|WCHAR](n)VARYING)"
'
else
'
" [CHAR|WCHAR](n) VARYING"
'
'
Comentários:
- WCHAR é gerado quando hostCCSIDIsDBCS é definido como true.
- A faceta whiteSpace é aplicada somente à geração de XML.
- A faceta padrão não é usada.
date
dateTime
duration
gDay
gMonth
gMonthDay
gYear
gYearMonth
time
n = minWSDL2ELSSpec/@defaultDateTimeLength,[32767|16383])
s = size([CHAR|WCHAR](n) VARYING)
'
if s > size(OFFSET) and
n > WSDL2ELSSpec/@inlineStringLengthLimit:
'
" OFFSET(pool) LOCATES([CHAR|WCHAR](n)VARYING)"
'
else
'
" [CHAR|WCHAR](n) VARYING"
'
'
Comentários:
- WCHAR é gerado quando hostCCSIDIsDBCS é verdadeiro.
- O aspecto whiteSpace é usado apenas pela estrutura de linguagem para conversão XML (Linguagem de Marcação Extensível)
As seguintes facetas não são usadas: padrão, enumeração, maxInclusive, maxExclusive, minInclusive, e minExclusive.

 

Tabela 2. XSD para PL/I: Tipos de dados de número inteiro não assinados
Tipo de dado integrado XSD: Declaração de dados Enterprise PL/I:
  unsignedByte
UNSIGNED FIXED BIN (8)
'
Comentários:
- As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
  unsignedShort
UNSIGNED FIXED BIN (16)
'
Comentários:
- As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
  unsignedInt
UNSIGNED FIXED BIN (32)
'
Comentários:
- As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
  unsignedLong
  BIN FIXO NÃO ASSINADO (64)

Comentários:
• Requer a opção compilar LIMITES (FIXEDBIN (31, 63)).
• As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.

 

Tabela 3. XSD para PL/I: Tipos de dados de número inteiro assinado
Tipo de dado integrado XSD: Declaração de dados Enterprise PL/I:
Integer
positiveInteger
negativeInteger
nonPositiveInteger
nonNegativeInteger
FIXED DECIMAL(n, 0)
'
Se a faceta totalDigits for especificada:
n = mintotalDigits, 31);
else:
n = min(default_total_digits, 31);
'
Comentários:
- As seguintes facetas não são usadas: fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
Byte
SIGNED FIXED BIN (7)
'
Comentários:
- As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e maxInclusive.
Curta
SIGNED FIXED BIN (15)
'
Comentários:
- As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
int
SIGNED FIXED BIN (31)
'
Comentários:
- As seguintes facetas não são usadas: totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
long
  BIN FIXO ASSINADO (63)

Comentários:
• Requer a opção compilar LIMITES (FIXEDBIN (31, 63)).
• As seguintes facetas não são usadas: fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.

 

Tabela 4. XSD para PL/I: Tipos de dados decimal e de ponto flutuante
Tipo de dado integrado XSD: Declaração de dados Enterprise PL/I:
decimal
FIXED DECIMAL (n, m)
'
se as facetas totalDigits e fractionDigits forem especificadas:
n = mintotalDigits, 31),
m = minfractionDigits, 31);
'
caso contrário, se a faceta totalDigits for especificada:
n = mintotalDigits, 31),
m = min(default_fraction_digits, 31);
'
else if the fractionDigits facet is specified:
n = min(default_total_digits, 31),
m = minfractionDigits, 31);
'
else:
n = min(default_total_digits, 31),
m = min(default_fraction_digits, 31).
'
Comentários:
- As seguintes facetas não são usadas: pattern, enumeration, whiteSpace, maxInclusive, e maxExclusive.
Valor flutuante
  FLOAT BIN (21) IEEE

Comentários:
• Suporte nativo para o ponto flutuante binário IEEE de precisão única.
• As seguintes facetas não são usadas: pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.
Duplo
  FLOAT BIN (53) IEEE

Comentários:
• Suporte nativo para o ponto flutuante binário de dupla precisão IEEE.
• Requer a opção compilar LIMITS (FIXEDBIN (31, 63)).
• As seguintes facetas não são usadas: pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive, e minExclusive.

 

Tabela 5. XSD para PL/I: Tipos de dados não suportados
Tipo de dado integrado XSD: Declaração de dados Enterprise PL/I:
Entidade
  Não suportado.

  COMMENTS:
• Entidades não analisadas requerem análise ou geração de um DTD interno
ou externo no tempo de execução; isto não é suportado por
Conversão XML Compilada.
  ENTAÇÕES
IDREFS
  Não suportado.

  COMMENTS:
• Os tipos de Datatipos derivados por lista ou união não são suportados. Consulte também ENTITY.
  anySimpleType
  Não suportado.

  COMENTÁRIOS:
- xsd:anySimpleType é o tipo base de todos os tipos de dados primitivos incorporados e derivados de
. Portanto, os elementos e atributos XML que
são do tipo xsd:anySimpleType podem ser de qualquer tipo atômico, de lista ou de união incorporado ou definido pelo usuário
no momento da execução.
  anyType
  Não suportado.

  COMENTÁRIOS:
- xsd:anyType é o tipo base do qual todos os tipos simples e complexos
são derivados. Um tipo
xsd:anyType não restringe seu conteúdo de forma alguma. Por exemplo, o conteúdo de
, um elemento XML que é do tipo xsd:anyType, pode ser um fragmento de documento XML arbitrário
em uma ocorrência e
base64Binary em outra.