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