지원되는 버전:현재 (18) / 17 / 16 / 15 / 14 / 13
개발 버전:개발
지원되지 않는 버전:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

9.15. XML 함수

이 섹션에 설명된 함수 및 함수와 유사한 표현식은 유형의 값에 작동합니다.스포츠 토토 사이트. 참조섹션 8.13에 대한 정보는스포츠 토토 사이트유형. 함수형 표현식스포츠 토토 사이트parse그리고스포츠 토토 사이트직렬화유형 간 변환용스포츠 토토 사이트이 섹션이 아닌 거기에 문서화되어 있습니다.

이러한 기능의 대부분을 사용하려면 다음이 필요합니다.PostgreSQL함께 만들어졌습니다configure --with-lib스포츠 토토 사이트.

9.15.1. XML 콘텐츠 생성

함수 및 함수와 유사한 표현식 세트를 사용하여 SQL 데이터에서 XML 콘텐츠를 생성할 수 있습니다. 따라서 클라이언트 애플리케이션에서 처리하기 위해 쿼리 결과를 XML 문서로 형식화하는 데 특히 적합합니다.

9.15.1.1. 스포츠 토토 사이트comment

스포츠 토토 사이트comment ( 텍스트 ) → 스포츠 토토 사이트

함수스포츠 토토 사이트comment지정된 텍스트가 포함된 XML 주석이 포함된 XML 값을 콘텐츠로 생성합니다. 텍스트에는 다음이 포함될 수 없습니다.--또는 a로 끝남-, 그렇지 않으면 결과 구성은 유효한 스포츠 토토 사이트 주석이 아닙니다. 인수가 null이면 결과도 null입니다.

예:

SELECT 스포츠 토토 사이트comment('안녕하세요');

  스포츠 토토 사이트주석
--------------
 <!--안녕하세요--

9.15.1.2. 스포츠 토토 사이트concat

스포츠 토토 사이트concat ( 스포츠 토토 사이트 [, ...] ) → 스포츠 토토 사이트

함수스포츠 토토 사이트concat개별 스포츠 토토 사이트 값 목록을 연결하여 스포츠 토토 사이트 콘텐츠 조각을 포함하는 단일 값을 생성합니다. Null 값은 생략됩니다. null이 아닌 인수가 없는 경우에만 결과는 null입니다.

예:

SELECT 스포츠 토토 사이트concat('<abc/', '<barfoo</bar');

      스포츠 토토 사이트concat
---------
 <abc/<barfoo</bar

XML 선언이 있는 경우 다음과 같이 결합됩니다. 모든 인수 값에 동일한 XML 버전 선언이 있으면 해당 버전이 결과에 사용되며, 그렇지 않으면 버전이 사용되지 않습니다. 모든 인수 값이 독립형 선언 값을 갖는 경우이면 해당 값이 결과에 사용됩니다. 모든 인수 값에 독립형 선언 값이 있고 적어도 하나가 다음과 같은 경우아니요, 그러면 결과에 사용됩니다. 그렇지 않으면 결과에 독립형 선언이 없습니다. 결과가 독립 실행형 선언이 필요하고 버전 선언이 필요하지 않은 것으로 결정된 경우 스포츠 토토 사이트에는 버전 선언을 포함하기 위한 스포츠 토토 사이트 선언이 필요하므로 버전 1.0의 버전 선언이 사용됩니다. 인코딩 선언은 모든 경우에 무시되고 제거됩니다.

예:

SELECT 스포츠 토토 사이트concat('<?스포츠 토토 사이트 version="1.1"?<foo/', '<?스포츠 토토 사이트 version="1.1"standalone="no"?<bar/');

             스포츠 토토 사이트concat
----------------------
 <?스포츠 토토 사이트 version="1.1"?<foo/<bar/

9.15.1.3. 스포츠 토토 사이트요소

스포츠 토토 사이트요소 ( 이름 이름 [, 스포츠 토토 사이트ATTRIBUTES ( 속성값 [ AS attname ] [, ...] ) ] [, 내용 [, ...]] ) → 스포츠 토토 사이트

스포츠 토토 사이트요소표현식은 지정된 이름, 속성 및 콘텐츠를 포함하는 XML 요소를 생성합니다.이름그리고attname구문에 표시된 항목은 값이 아닌 단순 식별자입니다.속성값그리고내용항목은 표현식이며, 어떤 것이든 생성할 수 있습니다.포스트그레SQL데이터 유형. 내의 인수스포츠 토토 사이트ATTRIBUTES스포츠 토토 사이트 요소의 속성을 생성합니다.내용값이 연결되어 내용을 형성합니다.

예:

SELECT 스포츠 토토 사이트element(이름 foo);

 스포츠 토토 사이트요소
------------
 <푸/

SELECT 스포츠 토토 사이트element(이름 foo, 스포츠 토토 사이트attributes('xyz' 막대형));

    스포츠 토토 사이트요소
------------------
 <foo bar="xyz"/

SELECT 스포츠 토토 사이트element(이름 foo, 스포츠 토토 사이트attributes(현재_날짜를 막대로), 'cont', 'ent');

             스포츠 토토 사이트요소
------------------------
 <foo bar="2007-01-26"콘텐츠</foo

유효한 XML 이름이 아닌 요소 및 속성 이름은 잘못된 문자를 시퀀스로 대체하여 이스케이프됩니다._x흐흐흐흐_, 여기서흐흐흐흐은 16진수 표기법으로 표시된 문자의 유니코드 코드 포인트입니다. 예를 들면:

SELECT 스포츠 토토 사이트element(이름 "foo$bar", 스포츠 토토 사이트attributes('xyz' as "a&b"));

            스포츠 토토 사이트요소
----------------------------------
 <foo_x0024_bar a_x0026_b="xyz"/

속성 값이 열 참조인 경우 명시적인 속성 이름을 지정할 필요가 없습니다. 이 경우 열 이름은 기본적으로 속성 이름으로 사용됩니다. 다른 경우에는 속성에 명시적인 이름을 지정해야 합니다. 따라서 이 예는 유효합니다.

CREATE TABLE 테스트(a 스포츠 토토 사이트, b 스포츠 토토 사이트);
SELECT 스포츠 토토 사이트element(name test, 스포츠 토토 사이트attributes(a, b)) FROM test;

그러나 이것들은 아닙니다:

SELECT 스포츠 토토 사이트element(name test, 스포츠 토토 사이트attributes('constant'), a, b) FROM test;
SELECT 스포츠 토토 사이트element(name test, 스포츠 토토 사이트attributes(func(a, b))) FROM test;

지정된 경우 요소 콘텐츠는 데이터 유형에 따라 형식이 지정됩니다. 콘텐츠 자체가 유형인 경우스포츠 토토 사이트, 복잡한 XML 문서를 구성할 수 있습니다. 예를 들면:

SELECT 스포츠 토토 사이트element(이름 foo, 스포츠 토토 사이트attributes('xyz' 막대형),
                            스포츠 토토 사이트element(이름 abc),
                            스포츠 토토 사이트comment('테스트'),
                            스포츠 토토 사이트element(이름 xyz));

                  스포츠 토토 사이트요소
---------------------------------
 <foo bar="xyz"<abc/<!--test--<xyz/</foo

다른 유형의 콘텐츠는 유효한 스포츠 토토 사이트 문자 데이터로 형식화됩니다. 이는 특히 <, 및 & 문자가 엔터티로 변환됨을 의미합니다. 바이너리 데이터(데이터 유형바이테아)는 구성 매개변수의 설정에 따라 base64 또는 16진수 인코딩으로 표시됩니다.스포츠 토토 사이트binary. 개별 데이터 유형에 대한 특정 동작은 PostgreSQL 매핑을 SQL:2006 이상에 지정된 매핑과 일치시키기 위해 발전할 것으로 예상됩니다.섹션 D.3.1.3.

9.15.1.4. 스포츠 토토 사이트forest

스포츠 토토 사이트forest ( 내용 [ AS 이름 ] [, ...] ) → 스포츠 토토 사이트

스포츠 토토 사이트forestexpression은 지정된 이름과 콘텐츠를 사용하여 요소의 XML 포리스트(시퀀스)를 생성합니다. 에 관해서는스포츠 토토 사이트요소, 각이름단순 식별자여야 하며,내용식은 모든 데이터 유형을 가질 수 있습니다.

예:

SELECT 스포츠 토토 사이트forest('abc' AS foo, 123 AS bar);

          스포츠 토토 사이트forest
-----------------
 <fooabc</foo<bar123</bar

SELECT 스포츠 토토 사이트forest(테이블_이름, 열_이름)
정보_스키마.열에서
WHERE table_schema = 'pg_catalog';

                                스포츠 토토 사이트forest
-----------------------​----------------------
 <table_namepg_authid</table_name​<column_name롤 이름</column_name
 <table_namepg_authid</table_name​<column_namerolsuper</column_name
 ...

두 번째 예에서 볼 수 있듯이 콘텐츠 값이 열 참조인 경우 요소 이름을 생략할 수 있으며, 이 경우 기본적으로 열 이름이 사용됩니다. 그렇지 않으면 이름을 지정해야 합니다.

유효한 XML 이름이 아닌 요소 이름은 다음과 같이 이스케이프됩니다.스포츠 토토 사이트요소위. 마찬가지로 콘텐츠 데이터는 이미 유형이 아닌 한 유효한 스포츠 토토 사이트 콘텐츠를 만들기 위해 이스케이프됩니다.스포츠 토토 사이트.

XML 포리스트는 둘 이상의 요소로 구성되어 있는 경우 유효한 XML 문서가 아니므로 래핑하는 것이 유용할 수 있습니다.스포츠 토토 사이트forest표현식스포츠 토토 사이트요소.

9.15.1.5. 스포츠 토토 사이트pi

스포츠 토토 사이트pi ( 이름 이름 [, 내용 ] ) → 스포츠 토토 사이트

스포츠 토토 사이트pi표현식은 XML 처리 명령을 생성합니다. 에 관해서는스포츠 토토 사이트요소, 그이름간단한 식별자여야 하며,내용식은 모든 데이터 유형을 가질 수 있습니다.내용(있는 경우) 문자 시퀀스를 포함해서는 안 됩니다.?.

예:

SELECT 스포츠 토토 사이트pi(php 이름, 'echo "hello world";');

            스포츠 토토 사이트pi
----------------
 <?php echo "hello world";?

9.15.1.6. 스포츠 토토 사이트root

스포츠 토토 사이트root ( 스포츠 토토 사이트, 버전 {텍스트|값 없음} [, 독립형 {|아니요|값 없음} ] ) → 스포츠 토토 사이트

스포츠 토토 사이트root표현식은 XML 값의 루트 노드 속성을 변경합니다. 버전이 지정되면 루트 노드의 버전 선언에 있는 값이 대체됩니다. 독립 실행형 설정이 지정되면 루트 노드의 독립 실행형 선언 값이 대체됩니다.

SELECT 스포츠 토토 사이트root(스포츠 토토 사이트parse(문서 '<?스포츠 토토 사이트 version="1.1"?<contentabc</content')),
               버전 '1.0', 독립형 예);

                스포츠 토토 사이트root
---------------------------
 <?스포츠 토토 사이트 version="1.0" 독립형="예"?
 <contentabc</content

9.15.1.7. 스포츠 토토 사이트agg

스포츠 토토 사이트agg ( 스포츠 토토 사이트 ) → 스포츠 토토 사이트

함수스포츠 토토 사이트agg은 여기에 설명된 다른 함수와 달리 집계 함수입니다. 다음과 같이 입력 값을 집계 함수 호출에 연결합니다.스포츠 토토 사이트concat단, 단일 행의 표현식 전체가 아닌 행 전체에서 연결이 발생한다는 점을 제외하면 그렇습니다. 보다PostgreSQL : 문서 : 15 : 9.21. 메이저 토토 사이트 기능집계 함수에 대한 추가 정보를 확인하세요.

예:

CREATE TABLE 테스트(y int, x 스포츠 토토 사이트);
테스트 값에 삽입(1, '<fooabc</foo');
테스트 값에 삽입(2, '<bar/');
SELECT 스포츠 토토 사이트agg(x) FROM 테스트;
        스포츠 토토 사이트agg
---------
 <fooabc</foo<bar/

연결 순서를 결정하려면,주문 기준절은 다음에 설명된 대로 집계 호출에 추가될 수 있습니다.섹션 4.2.7. 예를 들면:

SELECT 스포츠 토토 사이트agg(x ORDER BY y DESC) FROM 테스트;
        스포츠 토토 사이트agg
---------
 <bar/<fooabc</foo

다음의 비표준 접근 방식은 이전 버전에서 권장되었지만 특정 경우에는 여전히 유용할 수 있습니다.

SELECT 스포츠 토토 사이트agg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS 탭;
        스포츠 토토 사이트agg
---------
 <bar/<fooabc</foo

9.15.2. XML 술어

이 섹션에 설명된 표현식은 다음 속성을 확인합니다.스포츠 토토 사이트값.

9.15.2.1. IS 문서

스포츠 토토 사이트 IS 문서부울

표현식IS 문서인수 XML 값이 적절한 XML 문서이면 true를 반환하고, 그렇지 않으면(즉, 콘텐츠 조각) false를 반환하며, 인수가 null이면 null을 반환합니다. 보다섹션 8.13문서와 콘텐츠 조각의 차이점에 대해.

9.15.2.2. 문서가 아님

스포츠 토토 사이트 문서가 아님부울

표현식문서가 아님인수 XML 값이 적절한 XML 문서이면 false를 반환하고, 그렇지 않으면(즉, 콘텐츠 조각) true를 반환하며, 인수가 null이면 null을 반환합니다.

9.15.2.3. 스포츠 토토 사이트EXISTS

스포츠 토토 사이트EXISTS ( 텍스트 통과 [BY {REF|}] 스포츠 토토 사이트 [BY {REF|}] ) → 부울

함수스포츠 토토 사이트존재는 전달된 XML 값을 컨텍스트 항목으로 사용하여 XPath 1.0 표현식(첫 번째 인수)을 평가합니다. 해당 평가 결과가 빈 노드 집합이면 함수는 false를 반환하고, 다른 값을 생성하면 true를 반환합니다. 인수가 null인 경우 함수는 null을 반환합니다. 컨텍스트 항목으로 전달된 Null이 아닌 값은 콘텐츠 조각이나 비XML 값이 아닌 XML 문서여야 합니다.

예:

SELECT 스포츠 토토 사이트exists('//town[text() = ''Toronto'']' PASSING BY VALUE '<towns<townToronto</town<townOttawa</town</towns');

 XML이 존재한다
------------
 티
(1행)

참조 기준그리고값 기준절은 다음에서 허용됩니다.PostgreSQL, 그러나 설명된 대로 무시됩니다.섹션 D.3.2.

SQL 표준에서는스포츠 토토 사이트exists함수는 XML 쿼리 언어로 표현식을 평가하지만PostgreSQL에서 설명한 대로 XPath 1.0 표현식만 허용합니다.섹션 D.3.1.

9.15.2.4. 스포츠 토토 사이트_is_well_formed

스포츠 토토 사이트_is_well_formed ( 텍스트 ) → 부울
스포츠 토토 사이트_is_well_formed_document ( 텍스트 ) → 부울
스포츠 토토 사이트_is_well_formed_content ( 텍스트 ) → 부울

이 함수는 다음을 확인합니다.텍스트string은 올바른 형식의 XML을 나타내며 부울 결과를 반환합니다.스포츠 토토 사이트_is_well_formed_document잘 구성된 문서를 확인하는 동안스포츠 토토 사이트_is_well_formed_content잘 구성된 콘텐츠를 확인합니다.스포츠 토토 사이트_is_well_formed다음의 경우 전자를 수행합니다스포츠 토토 사이트option구성 매개변수가 다음으로 설정되었습니다.문서, 또는 후자로 설정된 경우콘텐츠. 이는 다음을 의미합니다.스포츠 토토 사이트_is_well_formed간단한 유형 변환 여부를 확인하는 데 유용합니다.스포츠 토토 사이트성공할 것이지만 다른 두 함수는 해당 변형이 있는지 확인하는 데 유용합니다.스포츠 토토 사이트PARSE성공할 것입니다.

예:

XML 옵션을 문서로 설정;
SELECT 스포츠 토토 사이트_is_well_formed('<');
 스포츠 토토 사이트_is_well_formed
-------
 에프
(1줄)

SELECT 스포츠 토토 사이트_is_well_formed('<abc/');
 스포츠 토토 사이트_is_well_formed
-------
 티
(1줄)

스포츠 토토 사이트option을 콘텐츠로 설정;
SELECT 스포츠 토토 사이트_is_well_formed('abc');
 스포츠 토토 사이트_is_well_formed
-------
 티
(1줄)

SELECT 스포츠 토토 사이트_is_well_formed_document('<pg:foo 스포츠 토토 사이트ns:pg="http://postgresql.org/stuff"bar</pg:foo');
 스포츠 토토 사이트_is_well_formed_document
----------------
 티
(1줄)

SELECT 스포츠 토토 사이트_is_well_formed_document('<pg:foo 스포츠 토토 사이트ns:pg="http://postgresql.org/stuff"bar</my:foo');
 스포츠 토토 사이트_is_well_formed_document
----------------
 에프
(1행)

마지막 예는 검사에 네임스페이스가 올바르게 일치하는지 여부가 포함되어 있음을 보여줍니다.

9.15.3. XML 처리

데이터 유형의 값을 처리하려면스포츠 토토 사이트, PostgreSQL이 제공하는 기능xpath그리고xpath_exists33079_33129스포츠 토토 사이트TABLE테이블 함수.

9.15.3.1. xpath

xpath ( xpath 텍스트, 스포츠 토토 사이트 스포츠 토토 사이트 [, nsarray 텍스트[] ] ) → 스포츠 토토 사이트[]

함수xpathXPath 1.0 표현식을 평가합니다.xpath(텍스트로 제공됨) XML 값에 대해스포츠 토토 사이트. XPath 표현식으로 생성된 노드 세트에 해당하는 XML 값의 배열을 반환합니다. XPath 표현식이 노드 집합이 아닌 스칼라 값을 반환하는 경우 단일 요소 배열이 반환됩니다.

두 번째 인수는 올바른 형식의 XML 문서여야 합니다. 특히 단일 루트 노드 요소가 있어야 합니다.

함수의 선택적 세 번째 인수는 네임스페이스 매핑의 배열입니다. 이 배열은 2차원 배열이어야 합니다.텍스트두 번째 축의 길이가 2인 배열입니다(즉, 각각 정확히 2개의 요소로 구성된 배열의 배열이어야 합니다). 각 배열 항목의 첫 번째 요소는 네임스페이스 이름(별칭)이고 두 번째 요소는 네임스페이스 URI입니다. 이 배열에 제공된 별칭이 XML 문서 자체(즉, XML 문서와xpath함수 컨텍스트, 별칭은현지).

예:

SELECT xpath('/my:a/text()', '<my:a 스포츠 토토 사이트ns:my="http://example.com"테스트</my:a',
             ARRAY[ARRAY['my', 'http://example.com']]);

 xpath
--------
 테스트

기본(익명) 네임스페이스를 처리하려면 다음과 같이 하십시오:

SELECT xpath('//mydefns:b/text()', '<a 스포츠 토토 사이트ns="http://example.com"<b테스트</b</a',
             ARRAY[ARRAY['mydefns', 'http://example.com']]);

 xpath
--------
 테스트

9.15.3.2. xpath_exists

xpath_exists ( xpath 텍스트, 스포츠 토토 사이트 스포츠 토토 사이트 [, nsarray 텍스트[] ] ) → 부울

함수xpath_exists는의 특수한 형식입니다.xpath함수. XPath 1.0 표현식을 충족하는 개별 XML 값을 반환하는 대신 이 함수는 쿼리가 충족되었는지 여부(구체적으로 빈 노드 집합 이외의 값을 생성했는지 여부)를 나타내는 부울 값을 반환합니다. 이 함수는 다음과 동일합니다.스포츠 토토 사이트EXISTS술어. 단, 네임스페이스 매핑 인수에 대한 지원도 제공한다는 점은 제외.

예:

SELECT xpath_exists('/my:a/text()', '<my:a 스포츠 토토 사이트ns:my="http://example.com"테스트</my:a',
                     ARRAY[ARRAY['my', 'http://example.com']]);

 xpath_exists
--------------
 티
(1행)

9.15.3.3. 스포츠 토토 사이트table

스포츠 토토 사이트TABLE (
    [ 스포츠 토토 사이트NAMESPACES ( namespace_uri AS namespace_name [, ...] ), ]
    행_표현 통과 [BY {REF|}] 문서_표현 [BY {REF|}]
     이름 { 유형 [경로 열 표현] [기본값 기본_표현] [NULL이 아님 | NULL]
                  | 순서의 경우 }
            [, ...]
) → 레코드 집합

스포츠 토토 사이트tableexpression은 XML 값, 행을 추출하기 위한 XPath 필터 및 열 정의 집합을 기반으로 하는 테이블을 생성합니다. 구문적으로는 함수와 유사하지만 쿼리의 테이블로만 나타날 수 있습니다.발신절.

선택사항스포츠 토토 사이트NAMESPACES절은 쉼표로 구분된 네임스페이스 정의 목록을 제공합니다. 여기서 각namespace_uri텍스트표현식 및 각네임스페이스_이름는 단순 식별자입니다. 문서에 사용되는 XML 네임스페이스와 해당 별칭을 지정합니다. 기본 네임스페이스 사양은 현재 지원되지 않습니다.

필수행_표현인수는 XPath 1.0 표현식입니다(다음과 같이 제공됨텍스트)가 평가되어 스포츠 토토 사이트 값을 전달합니다.문서_표현컨텍스트 항목으로 XML 노드 세트를 얻습니다. 이 노드는 무엇입니까스포츠 토토 사이트테이블출력 행으로 변환됩니다. 다음과 같은 경우 행이 생성되지 않습니다.문서_표현이 null이거나 다음과 같은 경우행_표현빈 노드 집합 또는 노드 집합 이외의 값을 생성합니다.

문서_표현에 대한 컨텍스트 항목을 제공합니다.행_표현. 올바른 형식의 XML 문서여야 합니다. 조각/숲은 허용되지 않습니다.참조 기준그리고값 기준절은 허용되지만 무시됩니다. 설명된 대로섹션 D.3.2.

SQL 표준에서,스포츠 토토 사이트테이블함수는 XML 쿼리 언어의 표현식을 평가하지만포스트그레SQL에서 설명한 대로 XPath 1.0 표현식만 허용합니다.섹션 D.3.1.

필수절은 출력 테이블에 생성될 열을 지정합니다. 형식은 위의 구문 요약을 참조하세요. 데이터 유형과 마찬가지로 각 열에 이름이 필요합니다.순서의 경우이 지정되었으며, 이 경우 유형정수암시적임). 경로, 기본 및 null 허용 여부 절은 선택 사항입니다.

표시된 열순서의 경우는 에서 검색된 노드 순서대로 1부터 시작하는 행 번호로 채워집니다.행_표현의 결과 node-set. 최대 하나의 열이 표시될 수 있습니다.순서의 경우.

참고

XPath 1.0은 노드 집합의 노드 순서를 지정하지 않으므로 결과의 특정 순서에 의존하는 코드는 구현에 따라 달라집니다. 자세한 내용은에서 확인할 수 있습니다.섹션 D.3.1.2.

열 표현열의 경우 현재 노드를 사용하여 각 행에 대해 평가되는 XPath 1.0 표현식입니다.행_표현결과를 컨텍스트 항목으로 사용하여 열의 값을 찾습니다. 그렇지 않은 경우열 표현이 주어지면 열 이름이 암시적 경로로 사용됩니다.

열의 XPath 표현식이 비XML 값(XPath 1.0에서는 문자열, 부울 또는 double로 제한됨)을 반환하고 열에 PostgreSQL 이외의 유형이 있는 경우스포츠 토토 사이트, 값의 문자열 표현을 PostgreSQL 유형에 할당하는 것처럼 열이 설정됩니다. (값이 부울인 경우 해당 문자열 표현은 다음과 같이 간주됩니다.1또는0출력 열의 유형 범주가 숫자인 경우, 그렇지 않은 경우또는거짓.)

열의 XPath 표현식이 비어 있지 않은 XML 노드 세트를 반환하고 열의 PostgreSQL 유형이 다음과 같은 경우스포츠 토토 사이트, 문서 또는 콘텐츠 형식인 경우 열에 표현식 결과가 정확하게 할당됩니다.[8]

다음에 할당된 비XML 결과스포츠 토토 사이트출력 열은 결과의 문자열 값이 포함된 단일 텍스트 노드인 콘텐츠를 생성합니다. 다른 유형의 열에 할당된 XML 결과에는 노드가 두 개 이상 있을 수 없으며, 그렇지 않으면 오류가 발생합니다. 정확히 하나의 노드가 있는 경우 열은 노드의 문자열 값(XPath 1.0에 정의된 대로)을 할당하여 설정됩니다.문자열함수)를 PostgreSQL 유형으로 변경합니다.

XML 요소의 문자열 값은 해당 요소와 그 하위 요소에 포함된 모든 텍스트 노드를 문서 순서로 연결한 것입니다. 하위 텍스트 노드가 없는 요소의 문자열 값은 빈 문자열입니다(notNULL). 모두xsi:nil속성은 무시됩니다. 공백만 해당됩니다.텍스트()텍스트가 아닌 두 요소 사이의 노드는 유지되며 a의 선행 공백은텍스트()노드가 평탄화되지 않았습니다. XPath 1.0문자열다른 XML 노드 유형의 문자열 값과 비XML 값을 정의하는 규칙에 대해 함수를 참조할 수 있습니다.

여기에 제시된 변환 규칙은 다음에 설명된 SQL 표준의 변환 규칙과 정확히 일치하지 않습니다.섹션 D.3.1.3.

경로 표현식이 주어진 행에 대해 빈 노드 세트(일반적으로 일치하지 않는 경우)를 반환하는 경우 열은 다음으로 설정됩니다.NULL, a가 아닌 경우기본_표현지정되었습니다. 그런 다음 해당 표현식을 평가한 결과 값이 사용됩니다.

A 기본_표현, 다음과 같은 경우 즉시 평가되기보다는스포츠 토토 사이트테이블가 호출되며 열에 기본값이 필요할 때마다 평가됩니다. 표현식이 안정적이거나 불변인 경우 반복 평가를 건너뛸 수 있습니다. 이는 다음과 같은 휘발성 함수를 유용하게 사용할 수 있음을 의미합니다.다음값in기본_표현.

열이 표시될 수 있습니다.NULL이 아님. 만약열 표현에 대한NULL이 아님열이 일치하는 항목이 없으며 해당 항목도 없습니다.기본값또는기본_표현또한 null로 평가되면 오류가 보고됩니다.

예:

선택으로 테이블 스포츠 토토 사이트데이터 생성
XML $$
<행
  <ROW id="1"
    <COUNTRY_IDAU</COUNTRY_ID
    <COUNTRY_NAME호주</COUNTRY_NAME
  </ROW
  <ROW id="5"
    <COUNTRY_ID일본</COUNTRY_ID
    <COUNTRY_NAME일본</COUNTRY_NAME
    <PREMIER_NAME아베 신조</PREMIER_NAME
    <SIZE 단위="sq_mi"145935</SIZE
  </ROW
  <ROW id="6"
    <COUNTRY_IDSG</COUNTRY_ID
    <COUNTRY_NAME싱가포르</COUNTRY_NAME
    <SIZE 단위="sq_km"697</SIZE
  </ROW
</ROWS
$$ AS 데이터;

XML테이블을 선택하세요.*
  XML데이터에서,
       스포츠 토토 사이트TABLE('//ROWS/ROW'
                데이터 전달 중
                열 id int PATH '@id',
                        순서에 대한 순서,
                        "COUNTRY_NAME" 텍스트,
                        country_id 텍스트 PATH 'COUNTRY_ID',
                        size_sq_km float PATH 'SIZE[@unit = "sq_km"]',
                        size_other 텍스트 경로
                             'concat(SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit)',
                        premier_name 텍스트 PATH 'PREMIER_NAME' DEFAULT '지정되지 않음');

 아이디 | 순서성 | 국가_이름 | 국가_ID | size_sq_km |  사이즈_기타 | 프리미어_이름
----+------------+------------+------------+------------+------------+---------------+---------------
  1 |          1 | 호주 | 호주 |            |              | 지정되지 않음
  5 |          2 | 일본 | 일본 |            | 145935 sq_mi | 아베 신조
  6 |          3 | 싱가포르 | SG |        697 |              | 지정되지 않음

다음 예는 여러 text() 노드 연결, XPath 필터로 열 이름 사용, 공백 처리, XML 주석 및 처리 지침을 보여줍니다.

선택으로 테이블 스포츠 토토 사이트요소 생성
XML $$
  <루트
   <element 안녕하세요<!-- xyxxz --2a2<?aaaaa? <!--x-- bbb<xxxx</xCC </element
  </root
$$ AS 데이터;

XML테이블을 선택하세요.*
  FROM 스포츠 토토 사이트elements, 스포츠 토토 사이트TABLE('/root' PASSING 데이터 COLUMNS 요소 텍스트);
         요소
------------
   Hello2a2 bbbxxxCC

다음 예는 다음의 방법을 보여줍니다.스포츠 토토 사이트NAMESPACES절은 XML 문서와 XPath 표현식에 사용되는 네임스페이스 목록을 지정하는 데 사용할 수 있습니다.

WITH 스포츠 토토 사이트data(data) AS (VALUES ('
<예 스포츠 토토 사이트ns="http://example.com/myns" 스포츠 토토 사이트ns:B="http://example.com/b"
 <item foo="1" B:bar="2"/
 <item foo="3" B:bar="4"/
 <item foo="4" B:bar="5"/
</예'::스포츠 토토 사이트)
)
XML테이블을 선택하세요.*
  FROM 스포츠 토토 사이트TABLE(스포츠 토토 사이트NAMESPACES('http://example.com/myns' AS x,
                              'http://example.com/b' AS "B"),
             '/x:예제/x:항목'
                통과(스포츠 토토 사이트data에서 데이터 선택)
                열 foo int PATH '@foo',
                  bar int PATH '@B:bar');
 푸 | 바
-----+------
   1 |   2
   3 |   4
   4 |   5
(3행)

9.15.4. 테이블을 XML로 매핑

다음 함수는 관계형 테이블의 내용을 XML 값으로 매핑합니다. XML 내보내기 기능으로 생각할 수 있습니다.

table_to_스포츠 토토 사이트 ( 테이블 regclass,  부울,
               테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
query_to_스포츠 토토 사이트 ( 질의 텍스트,  부울,
               테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
cursor_to_스포츠 토토 사이트 ( 커서 반환자, 개수 정수,  부울,
                테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트

table_to_스포츠 토토 사이트매개변수로 전달된 명명된 테이블의 내용을 매핑합니다.테이블.regclasstype은 선택적 스키마 한정 및 큰따옴표를 포함하여 일반적인 표기법을 사용하여 테이블을 식별하는 문자열을 허용합니다(참조PostgreSQL : 문서 : 15 : 8.19. 객체 식별자 토토 사이트 순위자세한 내용은).query_to_스포츠 토토 사이트텍스트가 매개변수로 전달된 쿼리를 실행합니다.질의그리고 결과 세트를 매핑합니다.cursor_to_스포츠 토토 사이트매개변수에 의해 지정된 커서에서 표시된 행 수를 가져옵니다.커서. 결과 값은 각 함수에 의해 메모리에 구축되므로 큰 테이블을 매핑해야 하는 경우 이 변형이 권장됩니다.

만약테이블포레스트이 false인 경우 결과 XML 문서는 다음과 같습니다.

<테이블 이름
  <행
    <columnname1데이터</columnname1
    <columnname2데이터</columnname2
  </row

  <행
    ...
  </row

  ...
</테이블 이름

만약테이블포레스트이 true입니다. 결과는 다음과 같은 XML 콘텐츠 조각입니다.

<테이블 이름
  <columnname1데이터</columnname1
  <columnname2데이터</columnname2
</테이블 이름

<테이블 이름
  ...
</테이블 이름

...

테이블 이름을 사용할 수 없는 경우, 즉 쿼리 또는 커서를 매핑할 때 문자열테이블첫 번째 형식에 사용됩니다.두 번째 형식으로.

이러한 형식 간의 선택은 사용자에게 달려 있습니다. 첫 번째 형식은 적절한 XML 문서로, 이는 많은 응용 프로그램에서 중요합니다. 두 번째 형식은 다음에서 더 유용한 경향이 있습니다.cursor_to_스포츠 토토 사이트결과 값이 나중에 하나의 문서로 재조립되는 경우 함수입니다. 위에서 설명한 XML 콘텐츠 생성 기능, 특히스포츠 토토 사이트요소, 결과를 취향에 맞게 변경하는 데 사용할 수 있습니다.

데이터 값은 함수에 대해 설명된 것과 동일한 방식으로 매핑됩니다.스포츠 토토 사이트요소위.

매개변수출력에 Null 값이 포함되어야 하는지 여부를 결정합니다. true인 경우 열의 Null 값은 다음과 같이 표시됩니다.

<열 이름 xsi:nil="true"/

어디에서xsi은 스포츠 토토 사이트 스키마 인스턴스의 스포츠 토토 사이트 네임스페이스 접두사입니다. 적절한 네임스페이스 선언이 결과 값에 추가됩니다. false인 경우 null 값이 포함된 열은 출력에서 생략됩니다.

매개변수대상결과의 원하는 XML 네임스페이스를 지정합니다. 특정 네임스페이스를 원하지 않는 경우 빈 문자열을 전달해야 합니다.

다음 함수는 위의 해당 함수에 의해 수행된 매핑을 설명하는 XML 스키마 문서를 반환합니다:

table_to_스포츠 토토 사이트schema ( 테이블 regclass,  부울,
                     테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
query_to_스포츠 토토 사이트schema ( 질의 텍스트,  부울,
                     테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
cursor_to_스포츠 토토 사이트schema ( 커서 반환자,  부울,
                      테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트

일치하는 XML 데이터 매핑과 XML 스키마 문서를 얻으려면 동일한 매개변수를 전달하는 것이 필수적입니다.

다음 함수는 함께 연결된 하나의 문서(또는 포리스트)에 XML 데이터 매핑과 해당 XML 스키마를 생성합니다. 독립적이고 자체 설명적인 결과가 필요한 경우 유용할 수 있습니다.

table_to_스포츠 토토 사이트_and_스포츠 토토 사이트schema ( 테이블 regclass,  부울,
                             테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
query_to_스포츠 토토 사이트_and_스포츠 토토 사이트schema ( 질의 텍스트,  부울,
                             테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트

또한 다음 기능을 사용하여 전체 스키마 또는 전체 현재 데이터베이스의 유사한 매핑을 생성할 수 있습니다.

schema_to_스포츠 토토 사이트 ( 스키마 이름,  부울,
                테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
schema_to_스포츠 토토 사이트schema ( 스키마 이름,  부울,
                      테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
schema_to_스포츠 토토 사이트_and_스포츠 토토 사이트schema ( 스키마 이름,  부울,
                              테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트

database_to_스포츠 토토 사이트 (  부울,
                  테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
database_to_스포츠 토토 사이트schema (  부울,
                        테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트
database_to_스포츠 토토 사이트_and_스포츠 토토 사이트schema (  부울,
                                테이블포레스트 부울, 대상 텍스트 ) → 스포츠 토토 사이트

이 함수는 현재 사용자가 읽을 수 없는 테이블을 무시합니다. 데이터베이스 전체 기능은 현재 사용자가 가지고 있지 않은 스키마를 추가로 무시합니다.사용법(조회) 권한이 있습니다.

이들은 잠재적으로 많은 양의 데이터를 생성하므로 메모리에 축적되어야 합니다. 대규모 스키마 또는 데이터베이스의 콘텐츠 매핑을 요청할 때 커서를 통해서라도 테이블을 별도로 매핑하는 것을 고려하는 것이 좋습니다.

스키마 콘텐츠 매핑의 결과는 다음과 같습니다:

<스키마 이름

table1-매핑

table2-매핑

...

</스키마이름

테이블 매핑 형식은 다음에 따라 다릅니다.테이블포레스트매개변수는 위에서 설명한 대로입니다.

데이터베이스 콘텐츠 매핑의 결과는 다음과 같습니다:

<데이터베이스 이름

<스키마1이름
  ...
</schema1name

<스키마2이름
  ...
</schema2name

...

</db이름

여기서 스키마 매핑은 위와 같습니다.

이러한 함수에 의해 생성된 출력을 사용하는 예로서,예 9.1다음의 출력을 변환하는 XSLT 스타일시트를 표시합니다.table_to_스포츠 토토 사이트_and_스포츠 토토 사이트schema테이블 데이터의 표 형식 변환을 포함하는 HTML 문서로. 비슷한 방식으로 이러한 함수의 결과를 다른 XML 기반 형식으로 변환할 수 있습니다.

예제 9.1. SQL/XML 출력을 HTML로 변환하기 위한 XSLT 스타일시트

<?스포츠 토토 사이트 version="1.0"?
<xsl:스타일시트 버전="1.0"
    스포츠 토토 사이트ns:xsl="http://www.w3.org/1999/XSL/Transform"
    스포츠 토토 사이트ns:xsd="http://www.w3.org/2001/XMLSchema"
    스포츠 토토 사이트ns="http://www.w3.org/1999/xhtml"

  <xsl:출력 방법="스포츠 토토 사이트"
      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
      doctype-public="-//W3C/DTD XHTML 1.0 엄격//EN"
      들여쓰기="예"/

  <xsl:템플릿 일치="/*"
    <xsl:변수 이름="스키마" select="//xsd:스키마"/
    <xsl:변수 이름="테이블 유형 이름"
                  select="$schema/xsd:요소[@name=name(current())]/@type"/
    <xsl:변수 이름="행 유형 이름"
                  select="$schema/xsd:complexType[@name=$tabletypename]/xsd:sequence/xsd:element[@name='row']/@type"/

    <html
      <머리
        <title<xsl:value-of select="name(current())"/</title
      </head
      <본문
        <테이블
          <tr
            <xsl:for-each select="$schema/xsd:complexType[@name=$rowtypename]/xsd:sequence/xsd:element/@name"
              <th<xsl:value-of select="."/</th
            </xsl:for-each
          </tr

          <xsl:for-each select="행"
            <tr
              <xsl:for-each select="*"
                <td<xsl:value-of select="."/</td
              </xsl:for-each
            </tr
          </xsl:for-each
        </table
      </body
    </html
  </xsl:템플릿

</xsl:스타일시트



[8]최상위 수준에서 둘 이상의 요소 노드를 포함하는 결과 또는 요소 외부의 공백이 아닌 텍스트는 콘텐츠 형식의 예입니다. XPath 결과는 두 가지 형식 중 하나일 수 없습니다. 예를 들어 XPath 결과가 포함된 요소에서 선택된 속성 노드를 반환하는 경우입니다. 이러한 결과는 XPath 1.0에 정의된 대로 허용되지 않는 각 노드가 해당 문자열 값으로 대체된 콘텐츠 형식으로 입력됩니다.문자열함수.

수정 사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.