데이터 형식 설명 언어

Data Format Description Language

Data Format Description Language(DFDL, 종종 발음되는 daff-o-dil)는 2011년 1월에 Open Grid Forum Proposal로 출판된 것으로, 일반 텍스트와 이진 데이터를 표준적인 방법으로 기술하기 위한 모델링 언어다.DFDL 모델 또는 스키마는 모든 텍스트 또는 이진 데이터를 기본 형식에서 읽거나 "파싱"하여 정보 세트의 인스턴스로 표시할 수 있도록 허용한다. (정보 세트는 물리적 형식과는 무관하게 데이터 컨텐츠의 논리적 표현이다.예를 들어, 하나의 레코드는 고정 길이 필드와 다른 하나의 용도 구분 기호를 가지고 있기 때문에 두 개의 레코드는 다른 형식일 수 있지만, 정확히 동일한 데이터를 포함할 수 있고, 두 레코드 모두 동일한 정보 세트로 나타낼 수 있다.)또한 동일한 DFDL 스키마를 통해 정보 세트(또는 "직렬화")의 인스턴스(instance)에서 데이터를 가져와 네이티브 포맷으로 작성할 수 있다.null

DFDL은 서술적이고 규범적이지 않다.DFDL은 데이터 형식이 아니며 특정 데이터 형식을 사용하도록 강요하지도 않는다.대신에 그것은 많은 다른 종류의 데이터 형식을 설명하는 표준 방법을 제공한다.이 접근법은 몇 가지 장점이 있다.[1]그것은 애플리케이션 작성자가 자신의 요구 사항에 따라 적절한 데이터 표현을 설계할 수 있도록 하고, 공유될 수 있는 표준적인 방법으로 기술할 수 있도록 하여, 복수의 프로그램이 데이터를 직접 교환할 수 있게 한다.null

DFDL은 W3C XML Schema 1.0의 설비를 기반으로 하여 이를 달성한다.비 XML 데이터의 모델링을 활성화하기에 충분한 XML 스키마의 하위 집합이 사용된다.이 접근방식의 동기는 완전히 새로운 스키마 언어의 발명을 피하고, DFDL 정보 세트를 통해 일반 텍스트와 이진 데이터를 해당 XML 문서로 쉽게 변환하는 것이다.null

교육 자료는 DFDL 자습서, 비디오 및 여러 실습 DFDL 실습의 형태로 제공된다.null

역사

DFDL은 출처에 관계없이 데이터를 이해할 수 있는 그리드 API의 필요성에 대응하여 만들어졌다.언어는 다양한 기존 텍스트와 이진 데이터 형식을 모델링할 수 있어야 했다.2003년 Global Grid Forum(이후 Open Grid Forum)에서 이러한 언어에 대한 사양을 작성하기 위한 워킹 그룹이 설립되었다.null

비 XML 물리적 표현을 기술하는 데 필요한 추가 정보를 전달하기 위해 <xs:appinfo> 주석을 사용하여 W3C XML 스키마의 하위 집합에 언어를 기초하는 결정이 일찍 내려졌다.이것은 오늘날 이미 상용 시스템에서 사용되고 있는 확립된 접근법이다.DFDL은 이러한 접근방식을 취하여 많은 텍스트 또는 이진 데이터 형식을 설명할 수 있는 개방형 표준으로 진화한다.null

언어에 대한 작업이 계속되어 2011년 1월에 OGF Proposed Recommendment GFD.174로 DFDL 1.0 명세서가 발표되었다.null

공식 OGF 추천서는 2021년 2월에 발행된 GFD.240으로, 모든 이전 버전을 폐기하고 현재까지 언급된 모든 이슈(html로도 이용 가능)를 통합한다.DFDL과 그 특징의 요약은 OGF에서 구할 수 있다.규격에 관련된 모든 문제는 GitHub 발행 추적기를 사용하여 추적되고 있다.null

구현

DFDL 스키마를 사용하여 데이터를 구문 분석 및 직렬화할 수 있는 DFDL 프로세서 구현이 가능하다.null

GitHub에는 상업적, 과학적 데이터 형식을 기술하는 DFDL 스키마의 공공 저장소가 설치되었다.UN/EDIFACT, NACHA, MIL-STD-2045, NITF 및 ISO8583과 같은 형식의 DFDL 스키마는 무료로 다운로드할 수 있다.null

사용자의 이름, 나이 및 위치를 제공하는 다음 텍스트 데이터 스트림을 예로 들어 보십시오.

이 데이터에 대한 논리 모델은 XML 스키마 문서의 다음 파편으로 설명될 수 있다.필드의 순서, 이름, 유형 및 카디널리티는 XML 스키마 모델로 표현된다.null

<xs:message> xmlns:xs="http://www.w3.org/2001/XMLSchema" ...>  <xs:complexType> 이름을 붙이다"person_type">   <xs:sequence>     <xs:message> 이름을 붙이다"이름" 타자를 치다"xs:string"/>     <xs:message> 이름을 붙이다"나이" 타자를 치다"xs:short"/>     <xs:message> 이름을 붙이다"county" 타자를 치다"xs:string"/>     <xs:message> 이름을 붙이다"나라" 타자를 치다"xs:string"/>   </xs:sequence> </xs:complexType>  </xs:schema> 

데이터 스트림의 물리적 표현을 추가로 모델링하기 위해 DFDL은 다음과 같이 xs:element 및 xs:sequence 객체에 대한 주석으로 XML 스키마 파편을 확장한다.

<xs:message> xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" ...>  <xs:complexType> 이름을 붙이다"person_type">   <xs:sequence>     <xs:pappinfo><xs:appinfo 출처="http://www.ogf.org/dfdl/">         <dfdl:message> 인코딩="ASCII" sequencekind="ordered"                         분리기="," 분리기유형="유픽스" 분리 정책="required"/>                        </xs:appinfo></xs:message>     <xs:message> 이름을 붙이다"이름" 타자를 치다"xs:string">       <xs:pappinfo><xs:appinfo 출처="http://www.ogf.org/dfdl/">         <dfdl:message> lengthkind="마취된" 인코딩="ASCII"/>                          </xs:appinfo></xs:message>     </xs:element>     <xs:message> 이름을 붙이다"나이" 타자를 치다"xs:short">       <xs:pappinfo><xs:appinfo 출처="http://www.ogf.org/dfdl/">         <dfdl:message> 대표="텍스트" lengthkind="마취된" 인코딩="ASCII"                       textNumberRep="표준" textNumberPattern="#0" textNumberBase="10"/>                          </xs:appinfo></xs:message>     </xs:element>     <xs:message> 이름을 붙이다"county" 타자를 치다"xs:string">       <xs:pappinfo><xs:appinfo 출처="http://www.ogf.org/dfdl/">         <dfdl:message> lengthkind="마취된" 인코딩="ASCII"/>                          </xs:appinfo></xs:message>     </xs:element>     <xs:message> 이름을 붙이다"나라" 타자를 치다"xs:string">       <xs:pappinfo><xs:appinfo 출처="http://www.ogf.org/dfdl/">         <dfdl:message> lengthkind="마취된" 인코딩="ASCII"/>                          </xs:appinfo></xs:message>     </xs:element>   </xs:sequence> </xs:complexType>  </xs:schema> 

이러한 DFDL 주석에 있는 속성 속성은 데이터가 가변 길이 필드와 쉼표로 구분된 ASCII 텍스트 형식으로 표시됨을 나타낸다.

대체적이고 더 컴팩트한 구문도 제공되는데, 여기서 DFDL 속성은 XML Schema 객체 자체에 비원천적인 속성으로 전달된다.null

<xs:message> xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" ...>  <xs:complexType> 이름을 붙이다"person_type">   <xs:message> dfdl:flas="ASCII" dfdl:sequenceKind="ordered"                 dfdl:flas="," dfdl:분리기유형="유픽스" dfdl:분리 정책="required">     <xs:message> 이름을 붙이다"이름" 타자를 치다"xs:string"                 dfdl:lengthKind="마취된" dfdl:flas="ASCII"/>                        <xs:message> 이름을 붙이다"나이" 타자를 치다"xs:short"                 dfdl:flas="텍스트" dfdl:lengthKind="마취된" dfdl:flas="ASCII"                 dfdl:textNumberRep="표준" dfdl:textNumberPattern="##0" dfdl:textNumberBase="10"/>                        <xs:message> 이름을 붙이다"county" 타자를 치다"xs:string"                 dfdl:lengthKind="마취된" dfdl:flas="ASCII"/>                        <xs:message> 이름을 붙이다"나라" 타자를 치다"xs:string"                 dfdl:lengthKind="마취된" dfdl:flas="ASCII"/>                      </xs:sequence> </xs:complexType>  </xs:schema> 

특징들

DFDL의 목적은 텍스트 또는 이진 데이터 형식을 나타낼 수 있는 풍부한 모델링 언어를 제공하는 것이다.1.0 공개는 이 목표를 향한 중요한 단계다.이 기능에는 다음이 포함된다.

  • 문자열, 숫자, 구획 소수점, 달력 및 불레앙과 같은 텍스트 데이터 유형
  • 두 개의 보완 정수, BCD, 패킹 소수점, 부동 소수점, 달력 및 불레앙과 같은 이진 데이터 유형
  • 고정 길이 데이터 및 데이터를 텍스트 또는 이진 표시로 구분
  • COBOL, C 및 PL/1과 같은 언어로 작성된 언어 데이터 구조
  • CSV, SWIFT, FIX, HL7, X12, HIPAA, EDIFACT, ISO 8583 등의 산업 표준
  • 모든 인코딩 및 엔디안 네스
  • 임의 길이의 비트 데이터
  • 텍스트 번호 및 일정관리에 대한 패턴 언어
  • 순서가 지정되지 않은 부동 컨텐츠
  • 구문 분석 및 직렬화 시 기본값
  • Out-of-Band 데이터 처리를 위한 Nil 값 기능
  • 고정 및 가변 배열
  • 동적 데이터를 모델링하기 위한 변수를 포함한 XPath 2.0 표현식 언어
  • 선택과 선택 가능성을 해결하기 위한 추측 분석 및 기타 메커니즘
  • XML Schema 1.0 규칙에 대한 유효성 검사
  • 여러 주석 지점에 공통 속성 값을 적용할 수 있는 범위 지정 메커니즘
  • 정보 집합에서 데이터 요소 숨기기
  • 정보 집합에 대한 요소 값 계산

참고 항목

참조

외부 링크