배열 데이터 형식은 모두 동일한 데이터 형식을 가진 하나 이상의 값으로 구성됩니다. 배열은 고정, 변수 또는 무한 길이로 정의할 수 있습니다.
*DataType: ARRAY 템플릿이 멤버가 모두 동일한 데이터 형식(멤버의 데이터 형식이라고도 함)인 복합 데이터 형식을 정의하도록 지시합니다. 배열 데이터 형식의 멤버는 바깥쪽 컨텍스트를 나타내는 요소에 속하는 개별 XML 자식 요소로 출력됩니다.
각 자식 요소가 데이터 형식 기본 형식을 나타내는 경우 데이터 형식은 각 요소의 xsi:type XML 특성에 의해 정의됩니다. GDL 특성이 데이터 형식 ARRAY로 정의된 경우 바깥쪽 컨텍스트는 <GDL_ATTRIBUTE> 요소가 됩니다. 각 XML 자식 요소의 요소 이름은 *ElementTags 지시문이 정의하는 해당 태그입니다. COMPOSITE 자체가 다른 복합 데이터 형식의 멤버인 경우 해당 바깥쪽 컨텍스트를 나타내는 요소가 만들어집니다. 이 부모 요소의 이름은 바깥쪽 복합 데이터 형식을 정의한 템플릿에서 할당한 해당 태그입니다.
다음 지시문은 ARRAY 데이터 형식을 정의하는 데 사용됩니다.
*ElementType (필수)를. 모든 요소의 데이터 형식을 정의하는 템플릿의 이름입니다. 하나의 데이터 형식만 지정할 수 있습니다.
*RequiredDelimiter (필수)를. 각 배열 요소를 다음 배열 요소와 구문적으로 구분하는 문자열입니다. 두 개의 연속 구분 기호는 생략된 요소로 해석됩니다. 후행 요소의 누락을 나타내기 위해 구분 기호가 필요하지 않습니다. 공백이 구분 기호로 사용되거나 구분 기호 문자열의 일부로 사용되는 경우 매우 주의해야 합니다. 예를 들어 불필요한 공백 문자는 파서에서 생략된 요소를 나타내는 것으로 해석됩니다. 이러한 추가 공백 문자를 볼 수 없으므로 예기치 않은 구문 분석 오류가 발생할 수 있습니다.
또한 과도한 공백은 원본 파일에서 정기적으로 제거되고 공백은 전처리기, 매크로 및 주석 처리의 결과로 입력 스트림에 추가되는 경우가 많습니다. 따라서 구문 분석되는 실제 문자열은 원래 지정된 것과 완전히 다른 수의 공백 문자를 가질 수 있습니다.
탭 문자는 입력 처리 중에 공백 문자로 정기적으로 변환되므로 필수 구분 기호 문자열의 일부로 사용하면 안 됩니다.
*OptionalDelimiter(선택 사항). *OptionalDelimiter 지정되고 *RequiredDelimiter 문자열에 인접하게 나타나는 문자로 구성된 문자열은 구분 기호의 일부로 간주됩니다. *RequiredDelimiter 문자열에 정의된 첫 번째 문자는 *OptionalDelimiter내에 나타나지 않아야 합니다.
*ElementTags (필수)를. 배열의 모든 요소에 동일한 요소 이름을 할당하려는 경우(또는 배열 크기가 무제한일 수 있는 경우) 태그를 하나만 제공합니다. 그렇지 않은 경우 *ArraySize 지정한 최대값과 동일한 값을 제공합니다.
배열의 각 멤버는 해당 태그를 사용하여 이름이 지정됩니다. 이 명명은 하나 이상의 배열 요소를 생략하는 경우에 유용합니다. 배열 요소를 생략하면 생략된 요소에 해당하는 태그가 사용되지 않습니다. 클라이언트의 혼동을 방지하려면 GDL 스냅샷 예약 요소 이름(즉, CONSTRUCT, ATTRIBUTE 및 Personality)을 태그 이름으로 사용하지 마세요.
*ArraySize (필수)를. 정수를 사용하여 고정 크기 배열의 크기를 지정하거나 두 개의 정수를 사용하여 변수 크기 배열에 허용되는 최소 및 최대 크기를 지정합니다. 최소 크기에는 0이 허용되며 GPD 와일드카드 문자(*)를 사용하여 크기 또는 최대 크기를 지정할 수 있습니다. 연속 쉼표(예:
*DaysOfWeek: (Sunday, Monday, , Wednesday, , Friday,)를 사용하여 인스턴스 데이터에서 생략된 값을 나타냅니다.*ArrayLabel(선택 사항). 이 지시문을 지정하면 배열 요소 목록을 괄호로 묶고 *ArrayLabel 레이블 앞에 와야 합니다. 이 지시문에 레이블이 지정되지 않은 경우 괄호는 선택 사항이며 앞에 오는 레이블은 허용되지 않습니다.
다음 템플릿을 고려합니다.
*Template: RECTANGLE
{
*Type: DATATYPE
*DataType: ARRAY
*ElementType: INTEGER
*RequiredDelimiter: ","
*OptionalDelimiter: "<20 09>"
*ArrayLabel: "rect"
*ElementTags: (left, top, right, bottom)
*ArraySize: 4
}
이 템플릿은 4개의 정수로 구성된 고정 크기 배열을 정의합니다. 배열에는 레이블(rect)이 할당되고 배열의 각 요소에는 고유한 요소 태그가 할당됩니다. 이러한 태그는 클라이언트에 도움이 되도록 XML 출력의 각 요소에 레이블을 지정합니다. 각 요소는 공백과 탭 문자의 조합을 더한 쉼표 또는 쉼표로 다음 요소와 구분됩니다. 배열 크기가 고정되어 있으므로 요소 누락이 허용되지 않습니다.
*DataType: ARRAY 템플릿은 해당 스키마를 생성하지 않습니다. *ElementType 지시문에 이름이 지정된 템플릿의 스키마가 대신 사용됩니다.
다음 GDL 항목을 고려합니다.
*ImageableArea: rect( - 10, 20 , +30, 0x40 )
IMAGERECT 템플릿을 고려합니다.
*Template: IMAGERECT
{
*Name: "*ImageableArea"
*Type: ATTRIBUTE
*ValueType: RECTANGLE
}
IMAGERECT 템플릿에서 GDL 항목을 해석하는 경우 결과 XML 출력이 됩니다.
<GDL_ATTRIBUTE Name="*ImageableArea" >
<left xsi:type="GDLW_int">-10</left>
<top xsi:type="GDLW_int">20</top>
<right xsi:type="GDLW_int">30</right>
<bottom xsi:type="GDLW_int">64</bottom>
</GDL_ATTRIBUTE>
참조는 원래 int아니라 래핑된 형식 GDLW_int 대한 것입니다.