Utilizando Expressões Regulares para Analisar Elementos de Dados

Se suas mensagens de entrada podem conter subcampos opcionais cuja presença ou ausência apenas pode ser determinada examinando o valor real dos dados (por exemplo, um campo opcional de dígitos numéricos seguidos por um ou mais caracteres alfabéticos), será necessário utilizar o método Separação de Elementos de Dados Utilizar Padrão de Dados. Isto é relevante principalmente para mensagens que estão de acordo com o padrão de mercado SWIFT. Para utilizar este método, é necessário fornecer expressões regulares para identificar as partes de uma mensagem de entrada que devem ser associadas a subcampos. É necessário fornecer um valor de expressão regular para a propriedade Padrão de Dados de cada filho do tipo complexo.

Durante a análise, os dados são correspondidos, em seqüência, a cada filho do tipo complexo. O analisador faz isso utilizando a expressão regular do filho para determinar o número de caracteres da mensagem que se aplicam a esse filho. Este número de caracteres é o comprimento da cadeia mais longa, começando na posição atual na mensagem, que corresponde à expressão regular. Se a cadeia mais longa que corresponde à expressão regular tiver comprimento zero, o elemento estará presente na mensagem e a cadeia vazia será utilizada para o valor. Se nenhuma cadeia corresponder à expressão regular, o elemento não estará presente. Isto pode causar um erro de validação subseqüente, se o elemento for requerido.

Quando o número de caracteres da mensagem de entrada tiver sido determinado, a conversão de dados normal ou a análise adicional, em caso de um elemento complexo, será executada no texto da mensagem de entrada para designar valores a elementos. Isto pode causar erros de overrun ou underrun, se o comprimento identificado pelo padrão não for apropriado para a definição do filho.

Sintaxe de Expressão Regular explica as regras de sintaxe completa e como aplicá-las, mas a tabela abaixo dá exemplos simples de análise utilizando padrões de dados. Um exemplo mais complexo aparece após a tabela.

Mensagem de Entrada Padrão de Dados Valor Correspondido
"123456ABC" [0-9]* "123456"
"123" [A-Z]* ""
"123" [A-Z]+ Não está presente
"ABCD123"

[A-Z]{1,3} primeiro campo

[A-Z]{2,4} segundo campo

"ABC" - primeiro campo (a cadeia mais longa correspondente ao padrão)

Não presente - segundo campo (comprimento mínimo de dois caracteres alfabéticos não está presente)

"ABCDEFGHIJ1234"

[A-Z]{1,3} primeiro campo, repetir

[0-9]+ segundo campo

"ABC" - primeiro campo [1]

"DEF" - primeiro campo [2]

"GHI" - primeiro campo [3]

"J" - primeiro campo [4]

"1234" - segundo campo (o campo de repetição é finalizado quando os dados "1234" não mais correspondem ao padrão de dados especificado para o primeiro campo).

O exemplo abaixo mostra a padrão correspondente de três campos.

Message definition:
	Complex type: Data Element Separation=Use Data Pattern
	Field1:	xsd:string minOccurs=1, maxOccurs=1, Length=5, Pad=SPACE,
				Data Pattern=".{5}"
	Field2:	xsd:int minOccurs=0, maxOccurs=1,
				Data Pattern="[0-9]{0,6}"
	Field3:	xsd:string minOccurs=1, maxOccurs=1, minLength=3, maxLength=4,
				Data Pattern="[A-Z][A-Za-z0-9]{2,3}"

Input1:		"ABCDE123F12"
Result1:		Field1="ABCDE", Field2="123", Field3="F12"

Input2:		"ABCDEF12"
Result2:		Field1="ABCDE", Field2=not present, Field3="F12"

Input3:		"ABCDE123456XXXX"
Result3:		Field1="ABCDE", Field2="123456", Field3="XXXX"

Input4:		"ABCDE1234567"
Result4:		Field1="ABCDE", Field2="123456", Field3=not present,
				which causes an exception if validation is enabled. One
				character ("7") remains unassigned to any element, which
				also causes an exception.

Em caso de um filho de repetição, as instâncias do filho são analisadas quantas vezes o padrão for correspondido. Isso será aplicado mesmo que Número Máximo de Ocorrências seja especificado para o elemento de repetição e o número de ocorrências exceda o limite superior. Portanto, alguma condição de finalização deve ser determinada do padrão da expressão regular para o elemento. A tabela acima inclui um exemplo de um elemento de repetição.

Durante a análise, os dados da mensagem de entrada que correspondem ao Padrão de Dados e são designados a um elemento não são varridos adicionalmente em busca de delimitadores de um tipo complexo de nível superior. Esse comportamento é semelhante ao do método Separação de Elementos de Dados Comprimento Fixo. No entanto, você pode codificar uma expressão regular que corresponderá os dados a um de vários delimitadores possíveis.

Durante a gravação, se for especificado um comprimento para um filho, o valor será preenchido conforme apropriado para esse comprimento. Este comportamento é semelhante ao do método Separação de Elementos de Dados Elementos Variáveis Delimitados, mas sem delimitadores.

Se a mensagem incluir um tipo complexo que tenha Composição definida como Opção, será possível definir o método Separação de Elementos de Dados como Utilizar Padrão de Dados. Nesse caso, os valores de Padrão de Dados dos filhos são utilizados para resolver a opção. Começando com o primeiro filho, o primeiro padrão é fornecer uma correspondência que determina qual filho está presente. Portanto, a ordem dos filhos em uma opção pode ser importante.

Um tipo complexo pode conter filhos de repetição com Número Máximo de Ocorrências não limitado. Comprimento e outras propriedades associadas, tais como, alinhamento e preenchimento, podem ser especificadas opcionalmente para os filhos.

Consulte Integridade do Modelo de Mensagem TDS para obter as regras que devem ser seguidas ao utilizar o método Separação de Elementos de Dados Utilizar Padrão de Dados e consulte Combinações de Composição e Validação de Conteúdo para obter detalhes das definições válidas de Composição e de Validação de Conteúdo.

Conceitos relacionados
Modelagem de Mensagens
O Modelo de Mensagem
Formato TDS: Relacionamento com o Modelo Lógico
Tarefas relacionadas
Desenvolvendo Modelos de Mensagens
Trabalhando com um Arquivo de Definição de Mensagem
Trabalhando com Objetos de Modelo de Mensagem
Referências relacionadas
Informações de Referência do Modelo de Mensagens
Propriedades do Objeto de Modelo de Mensagem
Informações adicionais do domínio MRM
Informações Adicionais sobre TDS
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ad09870_