YAZ yaz_record

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_record — 레코드를 반환합니다.


설명

yaz_record(resource $id, int $pos, string $type): string

yaz_record() 함수는 매개변수 pos에 의해 지정된 위치에서 현재 결과 세트의 레코드를 검사합니다.


매개변수

id
yaz_connect()에서 반환된 연결 리소스입니다.
pos
기록 위치입니다. 결과 세트의 레코드 위치는 1, 2, ... $hits로 번호가 매겨집니다. 여기서 $hits는 yaz_hits()에서 반환된 개수입니다.
type
type은 반환된 레코드의 형식을 지정합니다.

메모: 레코드가 Z39.50/SRW 서버에서 적절한 형식으로 반환되었는지 실제로 확인하는 것은 응용 프로그램입니다. 주어진 유형은 클라이언트 측(PHP/YAZ에서)에서 발생하는 변환만 지정합니다.

전송 레코드를 문자열/배열, PHP/YAZ로 변환하는 것 외에도 레코드의 문자 집합 변환을 수행하는 것도 가능합니다. 특히 권장되는 USMARC/MARC21의 경우 일반적으로 브라우저 등에서 지원하지 않는 문자 집합 MARC-8로 반환되기 때문입니다. 변환을 지정하려면 ; ; charset=from, to는 레코드의 원래 문자 집합이고 to는 결과 문자 집합입니다(PHP에서 볼 수 있음).

string
레코드는 단순 표시를 위해 문자열로 반환됩니다. 이 모드에서는 ISO2709를 거의 읽을 수 없기 때문에 모든 MARC 레코드가 라인별 형식으로 변환됩니다. XML 레코드 및 SUTRS는 원래 형식으로 반환됩니다. GRS-1은 (못생긴) 줄 단위 형식으로 반환됩니다.

이 형식은 디버깅을 위해 레코드를 빠르게 표시해야 하거나 적절한 표시를 수행하는 것이 불가능하기 때문에 적합합니다.

xml
레코드는 가능한 경우 XML 문자열로 반환됩니다. 이 모드에서는 모든 MARC 레코드가 » MARCXML로 변환됩니다. XML 레코드 및 SUTRS는 원래 형식으로 반환됩니다. GRS-1은 지원되지 않습니다.

이 형식은 MARC 레코드가 MARCXML로 변환된다는 점을 제외하면 string과 유사합니다.

이 형식은 레코드가 나중에 XML 파서 또는 XSLT 프로세서에 의해 처리되는 경우에 적합합니다.

raw
레코드는 원래 형식의 문자열로 반환됩니다. 이 유형은 MARC, XML 및 SUTRS에 적합합니다. GRS-1에서는 작동하지 않습니다.

MARC 레코드는 ISO2709 문자열로 반환됩니다. XML 및 SUTRS는 문자열로 반환됩니다.

syntax
레코드의 구문은 문자열로 반환됩니다(예: USmarc, GRS-1, XML 등).
database
해당 위치의 레코드와 연결된 데이터베이스 이름이 문자열로 반환됩니다.
array
레코드는 GRS-1 구조를 반영하는 배열로 반환됩니다. 이 유형은 MARC 및 GRS-1에 적합합니다. XML, SUTRS는 지원되지 않으며 실제 레코드가 XML 또는 SUTRS인 경우 빈 문자열이 반환됩니다.

반환된 배열은 GRS-1의 각 리프/내부 노드에 해당하는 목록으로 구성됩니다. 각 목록 항목은 첫 번째 요소 경로와 데이터(데이터를 사용할 수 있는 경우)가 있는 하위 목록으로 구성됩니다.

문자열인 경로는 루트에서 리프까지 각 트리 구성요소(구조화된 GRS-1 레코드의) 목록을 보유합니다. 각 구성 요소는 태그 유형, 태그 값 쌍(type, value)

문자열 태그에는 일반적으로 해당 태그 유형 3이 있습니다. MARC는 배열로 반환될 수도 있습니다(내부적으로 GRS-1로 변환됨).


반환 값

pos 위치의 레코드를 반환하거나 지정된 위치에 레코드가 없으면 빈 문자열을 반환합니다.

지정된 위치에 데이터베이스 레코드가 없으면 빈 문자열이 반환됩니다.


Examples

예제 #1 Array for GRS-1 record

다음 GRS-1 레코드를 고려하십시오.

(4,52)Robert M. Pirsig
(4,70)
      (4,90)
            (2,7)Transworld Publishers, ltd.
                

이 레코드에는 루트 수준에 두 개의 노드가 있습니다. 루트 수준의 첫 번째 요소는 (4,52) [태그 유형 4, 태그 값 52]이며 Robert M. Pirsig 데이터가 있습니다. 루트 수준(4,70)의 두 번째 요소에는 단일 요소(4,90)가 있는 하위 트리가 있습니다. (4,90) 데이터가 있는 또 다른 하위 트리(2,7)가 있습니다. Transworld Publishers, ltd...

이 레코드가 $p 위치에 있으면

                  
<?php
$ar = yaz_record($id, $p, "array");
print_r($ar);
?>
                  
                

다음을 출력합니다:

Array
(
    [0] => Array
        (
            [0] => (4,52)
            [1] => Robert M. Pirsig
        )
    [1] => Array
        (
            [0] => (4,70)
        )
    [2] => Array
        (
            [0] => (4,70)(4,90)
        )
    [3] => Array
        (
            [0] => (4,70)(4,90)(2,7)
            [1] => Transworld Publishers, ltd.
        )
)
                

예제 #2 Working with MARCXML

다음 PHP 스니펫은 MARC21/USMARC 레코드를 MARCXML로 반환합니다. 원본 레코드는 marc-8(대부분의 XML 파서에는 알려지지 않음)로 반환되므로 모든 XML 파서가 지원해야 하는 UTF-8로 변환합니다.

                  
<?php
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
?>
                  
                

$rec 레코드는 Sablotron XSLT 프로세서로 다음과 같이 처리할 수 있습니다.

                  
<?php
$xslfile = 'display.xsl';
$processor = xslt_create();
$parms = array('/_xml' => $rec);
$res = xslt_process($processor, 'arg:/_xml', $xslfile, NULL, $parms);
xslt_free($processor);
$res = preg_replace("']*>'", '', $res);
echo $res;
?>