====== 메타 데이타 저장 ====== 위키 페이지에서 저장되는 내용물들이 //data//라면 마지막 편집 시간, 편집자, 파일 크기 같은 정보들은 위키 페이지들의 //metadata//로 간주될 수 있습니다. 이 페이지는 이런 추가 정보들이 DokuWiki내에서 저장되는 방법과 위치를 설명합니다. ===== 분산 저장 ===== DokuWiki는 모든 metadata를 한 장소에 저장하지 않습니다.(예를 들면 데이타베이스나 레지스트리) 대신 [[changelog]], 데이타 파일 속성(예를 들면 파일 크기, 마지막 수정 시간), ''meta'' 디렉토리에서 metadata를 찾아 볼 수 있습니다. 분산 저장의 장단점에 대한 논의는 [[discussion:metadata|토론 페이지]]를 참고합니다. ===== Metadata 처리기 ===== ''meta''디렉토리 안의 정보는 초기에는 metadata renderer에 의해 쓰여집니다. ''meta''디렉토리 안에서 ''$id.meta''로 이름 붙여진 각 페이지에 대해 1 대 1 대응되는 파일이 생성되며, 파일은 각 키들이 [[http://dublincore.org/|Dublin Core]]요소 이름을 가진 직렬화된 다차원 PHP배열입니다. 처리기(renderer)는 페이지가 저장될 때, [[indexer]]를 통해 페이지가 추가되었을 때, DokuWiki가 처리하는 것이 아닌 다른 방법(예: 스크립트)에 의해 시작됩니다. ==== 메타 데이타 Get, Set 함수들 ==== ''inc/parserutils.php''에는 메타 데이타를 다루는 2개의 함수가 있습니다: === ''p_get_metadata($id)'' === 페이지의 다차원 배열을 넘겨줍니다. ^ 인자 이름 ^ 설명 ^ | ''$id'' | 위키 페이지 ID(필수) | === ''p_set_metadata($id, $data, $render, $persistent)'' === 메타데이타의 정보를 설정합니다. ^ 인자 이름 ^ 설명 ^ | ''$id'' | 위키 페이지 ID(필수) | | ''$data'' | 메타 데이타에서 설정되어야 하는 배열(key => value 쌍) (필수) | | ''$render'' | boolean, 페이지 메타 데이타가 renderer을 이용해 생성되어야할지 여부(옵션,기본값=false) | | ''$persistent'' | boolean, 특별한 메타 데이타값이 다음 메타 데이타 renderer를 통해 유지되어야 할 지 여부(기본값=true) | ==== Data 구조 ==== 현재 아래 metadata는 core metadata renderer에 의해 저장됩니다: * 'title' -- 문자열, 첫번째 제목 * 'creator' -- 문자열, 페이지 만든 사람의 실제 이름 * 'description' -- 배열 * 'abstract' -- 페이지의 raw 텍스트 abstract(250 ~ 500 문자) * 'tableofcontents' -- 배열, header id('hid') 목록, 제목 ('title'), 목록 항목 타잎 ('type')과 header레벨 ('level') * 'contributor' 배열, 사용자 ID목록 => 페이지 작성에 공헌한 사용자들 실제 이름 * 'date' -- 배열 * 'created' -- timestamp, 생성 시간 * 'modified'-- timestamp, 가장 최근 수정 시간(부분 수정 옵션이 아닌 경우만) * 'relation' -- 배열 * 'isreferencedby' -- 배열, 이 페이지에 링크된 페이지들 목록: ID => boolean(존재 여부) * 'references' -- 배열, 링크하는 페이지들 목록: ID => boolean(존재 여부) 추가적으로, 플러그인들은 더 많은 metadata요소들을 지원할 수 있습니다. 계획: * 'subject' -- 배열, 태그 목록([[plugin:blog]] plugin) * 'relation' -- 배열 * 'ispartof' -- 배열, 현재 페이지를 포함하고 있는 페이지 목록: ID => boolean(존재 여부) ([[plugin:include]]과 [[plugin:blog]] plugin) * 'haspart' -- 배열, 포함된 페이지 목록: ID => boolean(존재 여부) ([[plugin:include]]와 [[plugin:blog]] plugin) 외부적으로 사용될 수 있는 메타 데이타의 키들은 [[http://dublincore.org/documents/dces/|Dublin Core element set]]에 정의된 이름을 사용해야 합니다. ==== Metadata Persistence ==== 내부적으로 DokuWiki는 metadata를 위해 2개의 배열(''current''과 ''persistent'')을 유지합니다. ''persistent''은 참조 과정중에 지워지지 않는 key/values쌍의 복사본을 저장하기 위한 배열입니다. ''p_get_metadata()''를 사용하는 metadata에 대한 모든 요구들은 ''current''배열을 사용하는 것는 것입니다. persistenet 메타 데이타 키들의 예: * 'creator' * 'contributor' ==== Metadata와 플러그인 ==== 위에서 설명한 metadata get/set 함수 외에, 플러그인이 metadata와 상호작용할 수 있는 2가지 다른 메카니즘이 제공됩니다. [[Syntax Plugins|문법 플러그인]]은 ''$format=="metadata"''이 처리하는 ''render()''함수를 사용하여 //current//페이지에 대한 metadata를 생성할 수 있습니다. method by handling the . Metadata key/value쌍은 ''renderer%%->%%meta''배열에 추가되고 persistent값들 역시 ''renderer%%->%%persistent''배열에 추가됩니다. [[devel:Action Plugins]]은 metadta 처리 전/후에 metadata를 들여다 보거나 수정하기 위한 [[devel:events_list#PARSER_METADATA_RENDER]]를 위해 등록이 가능합니다. ===== 번역 ===== //english version: dokuwiki-2006-11-06. // //Add your email here if you created translated or modified whole or part of this page.// * //[[bootmeta@zoo.com|jk Lee]] - real mail domain is gmail, not zoo.com for spam filtering 2007-2-7 created//