SDXF

SDXF

SDXF(Structured Data eXchange Format)는 RFC 3072에 의해 정의된 데이터 직렬화 형식이다.서로 다른 유형의 임의 구조화된 데이터를 임의의 컴퓨터 간 교환을 위해 하나의 파일로 조립할 수 있도록 한다.

데이터를 임의로 자기 설명 형식으로 직렬화하는 기능은 XML을 연상시키지만, SDXF는 텍스트 형식(XML로서)이 아니다 — SDXF는 텍스트 편집기와 호환되지 않는다.SDXF를 사용하여 인코딩한 기준점(초기 및 복합체)의 최대 길이는 16777215바이트(16MB 미만)이다.

기술 구조 형식

SDXF 데이터는 임의 수준의 구조 깊이를 표현할 수 있다.데이터 요소는 자체 문서화로서 메타데이터(숫자, 문자 문자열 또는 구조)를 데이터 요소로 인코딩하는 것을 의미한다.이 형식의 디자인은 간단하고 투명하다: 컴퓨터 프로그램은 잘 정의된 기능의 도움으로 SDXF 데이터에 접근하여 프로그래머들이 정확한 데이터 레이아웃을 배우지 못하게 한다.

이름에서 "교환"이라는 단어는 다른 종류의 투명성을 반영한다: SDXF 기능은 데이터의 컴퓨터 아키텍처 독립적 변환을 제공한다.일련화는 추가 조치 없이 컴퓨터 간(직접 네트워크, 파일 전송 또는 CD를 통해) 교환할 수 있다.SDXF는 수신측 핸들 구조 적응에서 기능한다.

구조화된 데이터는 텍스트 문자열보다 더 복잡한 패턴을 예측하는 데이터다.[1]

상업적인 예: 두 회사가 디지털 송장을 교환하기를 원한다.송장에는 다음과 같은 계층적 중첩 구조가 있다.

INVOICE │ ├─ INVOICE_NO   ├─ DATE ├─ ADDRESS_SENDER │    ├─ NAME │    ├─ NAME │    ├─ STREET │    ├─ ZIP │    ├─ CITY │    └─ COUNTRY ├─ ADDRESS_RECIPIENT │    ├─ NAME │    ├─ NAME │    ├─ STREET │    ├─ ZIP │    ├─ CITY │    └─ COUNTRY ├─ INVOICE_SUM ├─ SINGLE_ITEMS │    ├─ SINGLE_ITEM │    │    ├─ QUANTITY │    │    ├─ ITEM_NUMBER │    │    ├─ ITEM_TEXT │ │- CARGENT │ -- SUM -- -- ...├- 조건... 


구조

기본 원소는 덩어리다.SDXF 연재 자체는 하나의 청크다.청크는 일련의 작은 청크로 구성될 수 있다.청크는 6바이트의 헤더 접두사 뒤에 데이터로 구성된다.헤더에 청크 식별자가 2바이트 이진수(Chunk_)로 포함되어 있음ID), 청크 길이 및 유형.압축, 암호화 등에 대한 추가 정보를 포함할 수 있다.

청크 유형은 데이터가 텍스트(문자 문자열), 이진수(integer 또는 floating point)로 구성되는지 또는 청크가 다른 청크의 합성어로 구성되는지 여부를 나타낸다.

구조화된 청크는 프로그래머가 위 송장과 같은 계층 구조물을 다음과 같이 SDXF 구조로 포장할 수 있게 해준다.모든 명명된 용어(INVOICE_NO, DATE, ADDE_SENDER 등)에는 1 ~ 65535 범위(부호 없는 2바이트 이진 정수)의 고유 번호가 부여된다.맨 위/맨 위 청크는 ID 송장(관련 숫자 청크)으로 구성된다.ID) 수준 1의 구조화된 청크로.이 송장 청크는 레벨 2 이상의 다른 청크로 채워진다.인보이스_NO, 날짜, 주소_SENDER, 주소_RECIPIENT, 인보이스_SUM, 싱글_ITEM, 조건. 일부 레벨 2 청크는 두 주소와 싱글_ITEM에 대해 차례로 구조화된다.

정확한 설명은 RFC의 2페이지 또는 여기서 대체를 참조하십시오.[2]

SDXF는 프로그래머가 컴팩트한 기능 세트로 SDXF 구조 작업을 할 수 있게 한다.그 중 몇 가지는 다음과 같다.

청크를 읽으려면 다음 기능을 사용해야 한다.
초기화하다
매개 변수 구조를 초기화하고 기존 청크에 연결하려면 다음과 같이 하십시오.
입장하다
구조화된 청크로 들어가려면 이 구조의 첫 번째 청크를 처리할 준비가 된다.
떠나다
현재 구조를 떠나려면.이 구조는 이미 최신이다.
다음에
존재하는 경우 다음 청크로 이동(그렇지 않으면 현재 구조에서 제외됨)
발췌하다
현재 청크에서 프로그램 변수로 데이터를 전송(수정)하려면
선발하다
지정된 청크 ID로 다음 청크를 검색하여 최신 상태로 만들려면 다음과 같이 하십시오.
청크를 빌드하려면 다음 기능을 사용해야 한다.
초기화하다
매개 변수 구조를 초기화하고 빈 출력 버퍼에 연결하여 새 청크를 생성하려면 다음과 같이 하십시오.
만들다
새 청크를 만들어 현재 기존 구조에 추가하십시오(있는 경우).
덧셈을
SDXF-구조에 전체 청크를 추가하십시오.
떠나다
현재 구조를 떠나려면.이 구조는 이미 최신이다.

다음 유사 코드는 송장을 생성한다.

  초기화하다 (sdx, 완충하다=1000);   // SDXF 매개변수 구조 sdx 초기화   만들다 (sdx, 아이디=송장, 데이터타입=구조화됨); // 주 구조물의 시작   만들다 (sdx, 아이디=인보이스_NO, 데이터타입=숫자, 가치를 매기다=123456); // 기본 청크 생성   만들다 (sdx, 아이디=날짜, 데이터타입=CHAR, 가치를 매기다="2005-06-17"); // 다시 한 번   만들다 (sdx, 아이디=주소_Sender, 데이터타입=구조화됨); // 하부 구조   만들다 (sdx, 아이디=이름, 데이터타입=CHAR, 가치를 매기다="피터 썸씽"); // 요소.이 하부 구조 내부의 청크   ...   만들다 (sdx, 아이디= 컨트리, 데이터타입=CHAR, 가치를 매기다="프랑스"); // 이 하부 구조 내부의 마지막 부분   떠나다; // 하부 구조 닫기 주소_Sender   ...   떠나다; // 하부구조 송장 마감 

[3]

송장 구조를 추출하기 위한 유사 코드는 다음과 같이 보일 수 있다.

  초기화하다 (sdx, 컨테이너=포인터  a의 SDXF-구조화하다);   // SDXF 매개변수 구조 sdx 초기화   입장하다 (sdx); // 송장 구조에 가입하십시오.                //   하는 동안에 (sdx.rc == SDX_RC_ok)   {       바꾸다 (sdx. 청크_ID)      {          케이스 인보이스_NO:            발췌하다 (sdx);                하지 않다 = sdx.가치를 매기다;  // 추출 함수는 매개 변수 필드 '값'에 정수 값을 넣는다.            부숴뜨리다;            //          케이스 날짜:            발췌하다 (sdx);                층층적인 (날짜가 맞지 않다, sdx.자료); // sdx.data는 추출된 문자열에 대한 포인터임            부숴뜨리다;            //          케이스 주소_Sender:            입장하다 (sdx);  // 주소가 구조화된 청크이기 때문에 'Enter'를 사용한다.            하다 하는 동안에 (sdx.rc == SDX_RC_ok) // 내부 루프             ...            부숴뜨리다;         ...      }     } 

SDXF는 가독성을 위해 설계되거나 텍스트 편집기에 의해 수정되도록 설계되지 않았다.관련 편집 가능한 구조는 SSDEF이다.

참고 항목

참조

  1. ^ 여기서 "구조화"는 구조화된 프로그래밍에서와 같은 의미로 사용된다고 주장할 수 있다. 마치 (엄격한) 구조화된 프로그램에 gotos가 없는 것처럼 SDXF에는 포인터/참고가 없다.그러나 이런 식으로 이름이 생겨날 필요는 없다.
  2. ^ "SDXF - 2. Description of the SDXF Format". Pinpi.com. Retrieved 2013-09-10.
  3. ^ "6.3 The Project PRNT: a complete example". PINPI. Retrieved 2013-09-10.

외부 링크