입력 메시지에 실제 데이터 값을 검사해야만 존재 여부를 판별할 수 있는 선택적 하위 필드가 포함될 수 있으면(예: 하나 이상의 영문자가 뒤에 오는 숫자의 선택적 필드), 데이터 요소 분리 메소드 데이터 패턴 사용을 사용해야 합니다. 특히 SWIFT 산업 표준을 준수하는 메시지와 관련이 있습니다. 이 메소드를 사용하려면, 하위 필드와 연관될 입력 메시지의 부분을 식별하는 정규 표현식을 제공해야 합니다. 복합 유형의 각 하위의 데이터 패턴 등록 정보에 정규 표현식 값을 제공해야 합니다.
구문 분석할 때, 데이터는 복합 유형의 각 하위 항목과 차례로 대조됩니다. 구문 분석기는 해당 하위 항목에 적용되는 메시지의 문자 수를 판별하기 위해 하위 항목에 정규 표현식을 사용하여 이를 수행합니다. 이 문자 수는 현재 위치에서 시작하여 정규 표현식과 일치하는 가장 긴 문자열 길이입니다. 정규 표현식과 일치하는 가장 긴 문자열의 길이가 0이면, 요소는 메시지에 존재하고 빈 문자열이 값에 사용됩니다. 정규 표현식과 일치하는 문자열이 없으면, 요소는 존재하지 않습니다. 이로 인해 요소가 필요할 경우 후속적으로 확인 오류가 발생합니다.
입력 메시지의 문자 수가 판별되었으면, 정상적인 데이터 변환이나 복합 유형의 경우 추가 구문 분석이 입력 메시지의 텍스트에서 수행되어 요소에 값을 지정합니다. 이 경우, 패턴으로 판별되는 길이가 하위 항목의 정의에 적합하지 않으면 데이터 오버런 또는 언더런 오류가 발생할 수 있습니다.
정규 표현식 구문에서는 전체 구문 규칙과 이 규칙을 적용하는 방법이 설명되며, 다음 표에는 데이터 패턴을 사용하는 구문 분석의 예가 나와 있습니다. 더 복잡한 예가 표 다음에 나와 있습니다.
입력 메시지 | 데이터 패턴 | 일치하는 값 |
---|---|---|
"123456ABC" | [0-9]* | "123456" |
"123" | [A-Z]* | "" |
"123" | [A-Z]+ | 존재하지 않음 |
"ABCD123" | [A-Z]{1,3} 첫 번째 필드 [A-Z]{2,4} 두 번째 필드 |
"ABC" - 첫 번째 필드(패턴과 일치하는 가장 긴 문자열) 존재하지 않음 - 두 번째 필드(영문자 2자의 최소 길이가 존재하지 않음) |
"ABCDEFGHIJ1234" | [A-Z]{1,3} 첫 번째 필드, 반복 [0-9]+ 두 번째 필드 |
"ABC" - 첫 번째 필드 [1] "DEF" - 첫 번째 필드 [2] "GHI" - 첫 번째 필드 [3] "J" - 첫 번째 필드 [4] "1234" - 두 번째 필드(반복 필드는 데이터 "1234"가 첫 번째 필드에 지정된 데이터 패턴과 더 이상 일치하지 않을 때 종료됩니다.) |
아래 예에서는 세 가지의 필드 패턴 일치를 보여줍니다.
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.
반복되는 하위 항목의 경우, 하위 항목의 인스턴스는 패턴이 일치된 횟수만큼 구문 분석됩니다. 최대 발생 수가 반복되는 요소에 지정되고 발생 수가 상한을 초과할 경우에도 적용됩니다. 따라서 일부 종료 조건은 요소의 정규 표현식 패턴에서 판별할 수 있어야 합니다. 위 표에는 반복되는 요소의 예가 나와 있습니다.
구문 분석할 때, 데이터 패턴과 일치하고 요소에 지정된 입력 메시지의 데이터는 보다 상위 레벨 복합 유형의 디리미터에 대해 추가로 스캔되지 않습니다. 이 작동은 데이터 요소 분리 메소드 고정 길이의 작동과 유사합니다. 그러나 다수의 가능한 디리미터 중 하나와 데이터를 대조할 정규 표현식을 코딩할 수 있습니다.
기록할 때 길이가 하위 항목에 지정된 경우, 값은 해당 길이에 적절하게 채워집니다. 이 작동은 데이터 요소 분리 메소드 가변 요소 디리미트의 작동과 유사하나 디리미터는 없습니다.
작성이 선택으로 설정된 복합 유형을 포함하는 메시지의 경우, 데이터 요소 분리 메소드를 데이터 패턴 사용으로 설정할 수 있습니다. 이 경우, 항위 항목의 데이터 패턴 값은 선택 항목을 해석하는 데 사용됩니다. 첫 하위 항목으로 시작하여 일치하는 첫 패턴은 하위 항목의 존재를 판별합니다. 따라서 선택한 하위 항목의 순서는 중요할 수 있습니다.
복합 유형에는 최대 발생 수가 설정되지 않은 반복되는 하위 항목이 포함될 수 있습니다. 조정 및 패딩과 같은 길이 및 기타 연관 등록 정보는 하위 항목에 대해 선택적으로 지정될 수 있습니다.
데이터 요소 분리 메소드 데이터 패턴 사용을 사용할 때 따라야 하는 규칙에 대해서는 TDS 메시지 모델 무결성을 참조하고 작성 및 컨텐츠 유효성 검증의 유효한 설정에 대한 자세한 내용은 작성과 컨텐츠 유효성 검증의 결합을 참조하십시오.