이 섹션에 설명 된 함수 및 기능과 같은 표현은 유형 값에서 작동합니다토토 베이
. 보다PostgreSQL : 문서 : 17 : 8.13. 스포츠 토토 베이 사이트 유형에 대한 정보는토토 베이
타입. 기능과 같은 표현식토토 베이PARSE
and토토 베이serialize
Type에서 오르기토토 베이
이 섹션에서는 문서화되어 있습니다.
이러한 기능의 대부분을 사용해야합니다postgresqlconfigure-with-lib토토 베이
.
SQL 데이터로부터 토토 베이 컨텐츠를 생성하기 위해 함수 및 기능-유사 표현식을 사용할 수 있습니다. 따라서 클라이언트 애플리케이션에서 처리하기 위해 쿼리 결과를 토토 베이 문서로 형식화하는 데 특히 적합합니다.
토토 베이text
#토토 베이text
(텍스트
) →토토 베이
함수토토 베이text
입력 인수를 컨텐츠로 포함하는 단일 텍스트 노드로 토토 베이 값을 반환합니다. Ampersand (와 같은 사전 정의 된 엔티티&
), 왼쪽 및 직각 브래킷 (<
) 및 따옴표 (""
) 탈출.
예 :
토토 베이text ( '<foo & bar')를 선택합니다. 토토 베이text ----------------------------- & lt; foo & amp; Bar & gt;
토토 베이comment
#토토 베이comment
(텍스트
) →토토 베이
함수토토 베이comment
지정된 텍스트를 컨텐츠로 포함하는 토토 베이 값을 포함하는 토토 베이 값을 만듭니다. 텍스트는 포함 할 수 없습니다“--
”또는 a로 끝납니다.“-
”, 그렇지 않으면 결과 구성은 유효한 토토 베이 주석이 아닙니다. 인수가 null이면 결과는 null입니다.
예 :
선택 토토 베이Comment ( 'Hello'); 토토 베이comment -------------- <!-안녕하세요-
토토 베이CONCAT
#토토 베이concat
(토토 베이
[, ...]) →토토 베이
함수토토 베이CONCAT
토토 베이 컨텐츠 조각을 포함하는 단일 값을 생성하기 위해 개별 토토 베이 값의 목록을 연결합니다. 널 값은 생략됩니다. 결과는 unnull 인수가없는 경우에만 NULL입니다.
예 :
토토 베이CONCAT를 선택합니다 ( '<abc/', '<bar foo </bar'); 토토 베이concat ------------------------ <ABC/ <bar foo </bar
토토 베이 선언은 현재 존재하는 경우 다음과 같이 결합됩니다. 모든 인수 값에 동일한 토토 베이 버전 선언이있는 경우 해당 버전이 결과에 사용되면 버전이 사용되지 않습니다. 모든 인수 값이 독립형 선언 값을 갖는 경우“예”, 그 값은 결과에 사용됩니다. 모든 인수 값이 독립형 선언 값을 가지고 있고 적어도 하나는입니다.“아니오”, 그런 다음 결과에 사용됩니다. 그렇지 않으면 결과에는 독립형 선언이 없습니다. 결과에 독립형 선언이 필요하지만 버전 선언이없는 경우 토토 베이에 버전 선언을 포함하기 위해 토토 베이 선언이 필요하기 때문에 버전 1.0이있는 버전 선언이 사용됩니다. 인코딩 선언은 모든 경우에 무시되고 제거됩니다.
예 :
토토 베이CONCAT를 선택하십시오 ( '<? 토토 베이 버전 = "1.1"? <foo/', '<? xml 버전 = "1.1"stockalone = "no"? <bar/'); 토토 베이concat -------------------------------------- <? xml 버전 = "1.1"? <foo/ <bar/
토토 베이element
#토토 베이element
(이름
이름
[,토토 베이attributes
(attvalue
[as
attname
] [, ...])] [,컨텐츠
[, ...]]) →토토 베이
the토토 베이element
expression은 주어진 이름, 속성 및 내용으로 토토 베이 요소를 생성합니다. 그만큼이름
andattname
구문에 표시된 항목은 값이 아닌 간단한 식별자입니다. 그만큼attvalue
and컨텐츠
항목은 표현이며, 이는 모든 것을 생산할 수 있습니다PostgreSQL데이터 유형. 내부의 논쟁토토 베이attributes
토토 베이 요소의 속성 생성; 그만큼컨텐츠
값은 내용을 형성하기 위해 연결되어 있습니다.
예 :
선택 XmlElement (이름 foo); 토토 베이element ------------ <foo/ 토토 베이element (이름 foo, 토토 베이attributes ( 'xyz'as bar))를 선택하십시오. 토토 베이element ----------------- <foo bar = "xyz"/ 토토 베이element (이름 foo, 토토 베이attributes (current_date as bar), 'cont', 'ent')를 선택하십시오. 토토 베이element ------------------------------------------------ <foo bar = "2007-01-26" content </foo
유효하지 않은 요소 및 속성 이름 토토 베이 이름은 불쾌한 문자를 시퀀스로 바꾸어 빠져 나옵니다_X
, 여기HHHH
_HHHH
| 예를 들어:
토토 베이ELEMENT를 선택합니다 (이름 "foo $ bar", 토토 베이ATTRIBUTES ( 'XYZ'로 "a & b")); 토토 베이element ------------------------------------ <foo_x0024_bar a_x0026_b = "xyz"/
속성 값이 열 참조 인 경우 명시 적 속성 이름을 지정할 필요가 없습니다.이 경우 열 이름은 기본적으로 속성 이름으로 사용됩니다. 다른 경우에는 속성에 명시적인 이름이 부여되어야합니다. 그래서이 예는 유효합니다 :
테이블 테스트 생성 (토토 베이, B 토토 베이); 테스트에서 XmlElement (이름 테스트, Xmlattributes (a, b))를 선택하십시오.
그러나 이것은 다음과 같습니다.
토토 베이ELEMENT (이름 테스트, 토토 베이ATTRIBUTES ( 'constant'), a, b)를 선택하여 테스트; XmlElement (이름 테스트, Xmlattributes (func (a, b)))를 테스트에서 선택하십시오;
요소 컨텐츠는 지정된 경우 데이터 유형에 따라 형식화됩니다. 내용 자체가 유형 인 경우토토 베이
, 복잡한 토토 베이 문서를 구성 할 수 있습니다. 예를 들어:
토토 베이ELEMENT 선택 (이름 foo, 토토 베이attributes ( 'xyz'As bar), 토토 베이element (이름 ABC), 토토 베이comment ( '테스트'), 토토 베이element (name xyz)); 토토 베이element ----------------------------------------------------- <foo bar = "xyz" <abc/ <!-테스트- <xyz/</foo
다른 유형의 내용은 유효한 토토 베이 문자 데이터로 형식화됩니다. 이것은 특히 문자 <,, & & & & & we가 엔티티로 변환 될 것임을 의미합니다. 이진 데이터 (데이터 유형BYTEA
) 구성 매개 변수 설정에 따라 Base64 또는 Hex 인코딩에 표시됩니다.토토 베이binary. 개별 데이터 유형에 대한 특정 동작은 PostgreSQL 매핑을 SQL : 2006 이상에 지정된 것과 정렬하기 위해 진화 할 것으로 예상됩니다.섹션 D.3.1.3.
토토 베이forest
#토토 베이forest
(컨텐츠
[as
이름
] [, ...]) →토토 베이
the토토 베이forest
expression은 주어진 이름과 내용을 사용하여 요소의 토토 베이 숲 (시퀀스)을 생성합니다. for토토 베이element
, 각이름
간단한 식별자 여야하고컨텐츠
표현식은 데이터 유형을 가질 수 있습니다.
예 :
토토 베이FOREST ( 'ABC'는 foo, 123으로 막대로 123); 토토 베이forest --------------------------------- <foo abc </foo <bar 123 </bar 토토 베이FOREST (table_name, column_name)를 선택하십시오. information_schema.columns에서 여기서 table_schema = 'pg_catalog'; 토토 베이forest ------------------------------------------------------------------------------- <table_name pg_authid </table_name <culns_name rolname </column_name <table_name pg_authid </table_name <culns_name rolsuper </column_name ...
두 번째 예에서 볼 수 있듯이 컨텐츠 값이 열 참조 인 경우 요소 이름을 생략 할 수 있으며,이 경우 열 이름은 기본적으로 사용됩니다. 그렇지 않으면 이름을 지정해야합니다.
유효하지 않은 요소 이름 토토 베이 이름이 표시된대로토토 베이element
위. 마찬가지로, 컨텐츠 데이터가 유효한 토토 베이 컨텐츠를 만들기 위해 피해서 이미 유형이 아닌 한토토 베이
.
토토 베이 포레스트가 유효하지 않다는 점에 유의하십시오. 하나 이상의 요소로 구성된 경우 토토 베이 문서가 있으므로 랩 래프에 유용 할 수 있습니다토토 베이forest
표현토토 베이element
.
토토 베이PI
#토토 베이pi
(이름
이름
[,컨텐츠
]) →토토 베이
the토토 베이PI
expression은 토토 베이 처리 명령을 생성합니다. for토토 베이element
, The이름
간단한 식별자 여야하는 반면컨텐츠
표현식은 데이터 유형을 가질 수 있습니다. 그만큼컨텐츠
, 존재하는 경우, 문자 순서를 포함해서는 안됩니다?
.
예 :
선택 토토 베이PI (이름 php, 'echo "hello world";'); 토토 베이PI --------------------------------- <? php echo "Hello World";?
토토 베이root
#토토 베이root
(토토 베이
,버전
텍스트
|가치 없음
[,StandalOne
예
|아니오
|가치 없음
]) →토토 베이
the토토 베이root
expression은 토토 베이 값의 루트 노드의 특성을 변경합니다. 버전이 지정되면 루트 노드의 버전 선언의 값을 대체합니다. 독립형 설정이 지정되면 루트 노드의 독립형 선언의 값을 대체합니다.
토토 베이ROOT (토토 베이PARSE (Document '<? 토토 베이 버전 = "1.1"? <content ABC </content'), 버전 '1.0', 독립형 예); 토토 베이root ------------------------------------------ <? xml 버전 = "1.0"standalone = "yes"? <content ABC </content
토토 베이agg
#토토 베이agg
(토토 베이
) →토토 베이
함수토토 베이agg
는 여기에 설명 된 다른 함수와 달리 집계 기능입니다. 입력 값을 집계 함수 호출에 연결합니다.토토 베이CONCAT
는 단일 행의 표현식이 아닌 행에 걸쳐 발생한다는 점을 제외하고는 그렇습니다. 보다Postgresql: Tài liệu: 17: 9.21. Hàm tổ와이즈 토토 hợp집계 함수에 대한 추가 정보.
예 :
테이블 테스트 생성 (y int, x xml); 테스트 값에 삽입 (1, '<foo abc </foo'); 테스트 값에 삽입 (2, '<bar/'); 테스트에서 토토 베이agg (x)를 선택하십시오. 토토 베이agg ------------------------ <foo abc </foo <bar/
연결 순서를 결정하려면주문 by
조항은 다음에 설명 된대로 집계 통화에 추가 될 수 있습니다섹션 4.2.7. 예를 들어:
테스트에서 토토 베이agg (x order by y desc)를 선택합니다. 토토 베이agg ------------------------ <bar/ <foo abc </foo
이전 버전에서는 다음과 같은 비표준 접근 방식이 권장되었으며 특정 경우에도 여전히 유용 할 수 있습니다.
토토 베이agg (x)를 선택하십시오 (Y desc의 테스트 순서에서 선택 *) 탭; 토토 베이agg ------------------------ <bar/ <foo abc </foo
이 섹션에 설명 된 표현식은의 속성을 확인합니다.토토 베이
값.
is document
#토토 베이
is document
→부울
표현is document
인수 토토 베이 값이 적절한 토토 베이 문서 인 경우 true를 반환합니다. 보다PostgreSQL : 문서 : 17 : 8.13. 스포츠 토토 베이 사이트 유형문서와 콘텐츠 조각의 차이에 대한 정보.
토토 베이exists
#토토 베이exists
(텍스트
통과
[by
Ref
|value
]토토 베이
[by
Ref
|value
]) →부울
함수토토 베이exists
전달 된 토토 베이 값을 컨텍스트 항목으로 XPath 1.0 표현식 (첫 번째 인수)을 평가합니다. 해당 평가 결과가 빈 노드 세트를 생성하면 함수가 거짓을 반환합니다. 인수가 null이면 함수가 Null을 반환합니다. 컨텍스트 항목이 컨텐츠 조각 또는 토토 베이이 아닌 값이 아닌 토토 베이 문서 여야하지 않기 때문에 통과되지 않은 값이 없습니다.
예 :
토토 베이exists 선택 ( '// town [) =' '토론토' '] 토토 베이exists ------------ 티 (1 행)
theby ref
및value
조항이 수락됩니다PostgreSQL, 그러나에서 논의 된 바와 같이 무시됩니다섹션 D.3.2.
SQL 표준에서토토 베이exists
함수는 토토 베이 쿼리 언어의 표현식을 평가하지만PostgreSQL|섹션 D.3.1.
토토 베이_is_well_formed
#토토 베이_is_well_formed
(텍스트
) →부울
토토 베이_is_well_formed_document
(텍스트
) →부울
토토 베이_is_well_formed_content
(텍스트
) →부울
이 기능은 a를 확인합니다.텍스트
스트링은 잘 형성된 토토 베이을 나타내며 부울 결과를 반환합니다.토토 베이_is_well_formed_document
잘 형성된 문서를 확인하는 동안토토 베이_is_well_formed_content
잘 형성된 콘텐츠를 확인하십시오.토토 베이_is_well_formed
토토 베이option구성 매개 변수가 설정되었습니다문서
또는 후자가 설정된 경우컨텐츠
. 이것은토토 베이_is_well_formed
간단한 캐스트가 입력 할 것인지 확인하는 데 유용합니다토토 베이
성공할 것입니다. 다른 두 기능은 해당 변형이를 보는 데 유용합니다토토 베이PARSE
성공할 것입니다.
예 :
Xmloption을 문서화하도록 설정; 토토 베이_is_well_formed ( '<')를 선택하십시오. 토토 베이_is_well_formed ------------------- 에프 (1 줄) 선택 토토 베이_is_well_formed ( '<abc/'); 토토 베이_is_well_formed ------------------- 티 (1 줄) 토토 베이option을 컨텐츠로 설정하십시오. 선택 토토 베이_is_well_formed ( 'ABC'); 토토 베이_is_well_formed ------------------- 티 (1 줄) 토토 베이_is_well_formed_document를 선택하십시오 ( '<pg : foo xmlns : pg = "http://postgresql.org/stuff" bar </pg : foo'); 토토 베이_is_well_formed_document --------------------------------- 티 (1 줄) 토토 베이_is_well_formed_document를 선택하십시오 ( '<pg : foo xmlns : pg = "http://postgresql.org/stuff" bar </my : foo'); 토토 베이_is_well_formed_document --------------------------------- 에프 (1 행)
마지막 예제는 검사에 네임 스페이스가 올바르게 일치하는지 여부가 포함되어 있음을 보여줍니다.
데이터 유형의 처리 값토토 베이
, PostgreSQL은 함수를 제공합니다xpath
andxpath_exists
35216_35266토토 베이table
테이블 기능.
xpath
#xpath
(xpath
텍스트
,토토 베이
토토 베이
[,NSARRAY
텍스트 []
]) →토토 베이 []
함수xpath
XPath 1.0 표현식 평가xpath
(토토 베이 값에 대한 텍스트)토토 베이
. XPath 표현식에 의해 생성 된 노드 세트에 해당하는 토토 베이 값의 배열을 반환합니다. XPath 표현식이 노드 세트가 아닌 스칼라 값을 반환하면 단일 요소 어레이가 반환됩니다.
두 번째 인수는 잘 형성된 토토 베이 문서 여야합니다. 특히 단일 루트 노드 요소가 있어야합니다.
함수의 선택적 세 번째 인수는 네임 스페이스 매핑 배열입니다. 이 배열은 2 차원이어야합니다텍스트
36808_37222xpath
함수 컨텍스트, 별칭은로컬).
예 :
xpath ( '/my : a/text ()', '<my : a xmlns : my = "http://example.com" test </my : a', 배열 [배열 [ 'my', 'http://example.com']); xpath -------- 시험
기본 (익명) 네임 스페이스를 다루려면 다음과 같은 일을하십시오.
xpath ( '// mydefns : b/text ()', '<a xmlns = "http://example.com" <b 테스트 </b </a', 배열 [배열 [ 'mydefns', 'http://example.com']); xpath -------- 시험
xpath_exists
#xpath_exists
(xpath
텍스트
,토토 베이
토토 베이
[,NSARRAY
텍스트 []
]) →부울
함수xpath_exists
전문화 된 형태의xpath
함수. XPath 1.0 표현식을 만족시키는 개별 토토 베이 값을 반환하는 대신,이 함수는 쿼리가 만족되었는지 여부를 나타내는 부울을 반환합니다 (특히 빈 노드 세트 이외의 값을 생성했는지 여부). 이 기능은와 같습니다.토토 베이exists
네임 스페이스 매핑 인수에 대한 지원을 제공한다는 점을 제외하고는 술어.
예 :
xpath_exists를 선택하십시오 ( '/my : a/text ()', '<my : a xmlns : my = "http://example.com" test </my : a', 배열 [배열 [ 'my', 'http://example.com']); xpath_exists -------------- 티 (1 행)
토토 베이table
#토토 베이table
( [토토 베이namespaces
(네임 스페이스_URI
as
네임 스페이스 _name
[, ...]),]row_expression
통과
[by
Ref
|value
]Document_Expression
[by
Ref
|value
]열
이름
타입
[PATH
Column_Expression
] [기본값
default_expression
] [NOT NULL
|NULL
] |의식
[, ...] ) →Setof Record
the토토 베이table
expression 토토 베이 값, 행을 추출하는 XPath 필터 및 열 정의 세트를 기반으로 테이블을 생성합니다. 성적으로 함수와 유사하지만 쿼리의 테이블로만 나타날 수 있습니다.From
절.
선택 사항토토 베이namespaces
조항은 쉼표로 구분 된 네임 스페이스 정의 목록을 제공합니다.네임 스페이스_URI
is텍스트
표현 및 각네임 스페이스 _name
는 간단한 식별자입니다. 문서에 사용 된 토토 베이 네임 스페이스 및 해당 별칭을 지정합니다. 기본 네임 스페이스 사양은 현재 지원되지 않습니다.
필수row_expression
인수는 XPath 1.0 표현식입니다 (as텍스트
) 평가 된 토토 베이 값을 전달Document_Expression
컨텍스트 항목으로서 토토 베이 노드 세트를 얻습니다. 이 노드는 무엇입니다토토 베이table
출력 행으로 변환합니다. 이면 행이 생성되지 않습니다.Document_Expression
row_expression
빈 노드 세트 또는 노드 세트 이외의 값을 생성합니다.
Document_Expression
컨텍스트 항목 제공row_expression
. 잘 형성된 토토 베이 문서 여야합니다. 조각/숲은 허용되지 않습니다. 그만큼ref
andvalue
조항은 받아 들여 지지만 무시됩니다.섹션 D.3.2.
SQL 표준에서토토 베이table
함수는 토토 베이 쿼리 언어의 표현식을 평가하지만PostgreSQL섹션 D.3.1.
필수열
절은 출력 테이블에서 생성 될 열을 지정합니다. 형식은 위의 구문 요약을 참조하십시오. 데이터 유형과 마찬가지로 각 열에 이름이 필요합니다 (의식
지정되어 있으며,이 경우 유형정수
암시 적입니다). 경로, 기본 및 무효 조항은 선택 사항입니다.
표시된 열의식
|에서 검색 한 노드의 순서대로 1로 시작하여 행 번호로 채워집니다.row_expression
의 결과 노드 세트. 최대 하나의 열이 표시 될 수 있습니다의식
.
xpath 1.0은 노드 세트에서 노드 주문을 지정하지 않으므로 결과의 특정 순서에 의존하는 코드는 구현에 따라 다릅니다. 세부 사항은에서 찾을 수 있습니다.섹션 D.3.1.2.
thecolumn_expression
열의 경우 각 행에 대해 평가되는 XPath 1.0 표현식이며row_expression
열의 값을 찾기 위해 컨텍스트 항목으로 결과. 그렇지 않은 경우column_expression
가 주어지면 열 이름은 암시 적 경로로 사용됩니다.
열의 XPath 표현식이 비 토토 베이 값 (XPATH 1.0에서 String, Boolean 또는 Double으로 제한됨)을 반환하는 경우 열에는 이외의 PostgreSQL 유형이 있습니다.토토 베이
, 열은 값의 문자열 표현을 PostgreSQL 유형에 할당하여 설정됩니다. (값이 부울 인 경우, 문자열 표현이 필요합니다1
또는0
출력 열 유형 카테고리가 숫자 인 경우true
또는false
.)
열의 XPath 표현식이 비어 있지 않은 토토 베이 노드 세트를 반환하고 열의 PostgreSQL 유형이입니다.토토 베이
, 문서 또는 내용 형식 인 경우 열에 표현식 결과가 정확히 할당됩니다.[8]
토토 베이이 아닌 결과토토 베이
출력 열은 결과의 문자열 값을 가진 단일 텍스트 노드 인 컨텐츠를 생성합니다. 다른 유형의 열에 할당 된 토토 베이 결과는 둘 이상의 노드가 없거나 오류가 발생할 수 있습니다. 정확히 하나의 노드가있는 경우 노드의 문자열 값을 할당하여 열이 설정됩니다 (XPath 1.0에 대해 정의 된대로String
함수) PostgreSQL 유형으로.
토토 베이 요소의 문자열 값은 해당 요소와 그 후손에 포함 된 모든 텍스트 노드의 문서 순서로 연결입니다. 후손 텍스트 노드가없는 요소의 문자열 값은 빈 문자열입니다 (아님NULL
). 어느XSI : NIL
속성은 무시됩니다. 공백 전용text ()
텍스트가 아닌 두 가지 요소 사이의 노드가 보존되고text ()
노드는 평평하지 않습니다. XPath 1.0String
다른 토토 베이 노드 유형의 문자열 값과 비 토토 베이 값을 정의하는 규칙에 대해 함수를 참조 할 수 있습니다.
여기에 제시된 전환 규칙은 SQL 표준의 규칙이 아닙니다.섹션 D.3.1.3.
경로 표현식이 빈 노드 세트를 반환하면 주어진 행에 대해 열이로 설정됩니다.NULL
default_expression
지정되어 있습니다. 그런 다음 표현식을 평가하여 발생하는 값이 사용됩니다.
adefault_expression
토토 베이table
호출되면 열에 대한 기본값이 필요할 때마다 평가됩니다. 표현이 안정적이거나 불변으로 자격이있는 경우 반복 평가를 건너 뛸 수 있습니다. 이것은 당신이 |와 같은 휘발성 기능을 유용하게 사용할 수 있음을 의미합니다.NextVal
indefault_expression
.
열이 표시 될 수 있습니다NOT NULL
. 인 경우column_expression
aNOT NULL
열은 아무것도 일치하지 않으며 없습니다기본값
또는default_expression
또한 NULL로 평가하면 오류 가보고됩니다.
예 :
테이블 xmldata를 선택하여 작성하십시오 xml $$ <줄 <row id = "1" <country_id au </country_id <country_name 호주 </country_name </row <row id = "5" <country_id jp </country_id <country_name 일본 </country_name <premier_name Shinzo Abe </premier_name <size init = "sq_mi" 145935 </size </row <row id = "6" <country_id sg </country_id <country_name 싱가포르 </country_name <size init = "sq_km" 697 </size </row </rows 데이터로서 $$; 토토 베이table을 선택하십시오.* 토토 베이DATA에서 토토 베이table ( '// 행/행' 전달 데이터 열 INT int path '@id', 의식을위한 의식, "Country_Name"텍스트, Country_id 텍스트 경로 'Country_id', size_sq_km float path 'size [@unit = "sq_km"]', size_other 텍스트 경로 'concat (size [@unit! = "sq_km"], "", size [@unit! = "sq_km"/@init)', premier_name 텍스트 경로 'premier_name'default 'not windified'); id | 의식 | Country_Name | Country_id | size_sq_km | size_other | premier_name ----+------------+-------------------------------------------------------------------------------------------------------------- 1 | 1 | 호주 | au | | | 지정되지 않았습니다 5 | 2 | 일본 | JP | | 145935 SQ_MI | 신조 아베 6 | 3 | 싱가포르 | sg | 697 | | 지정되지 않음
다음 예제는 여러 텍스트 () 노드의 연결, XPATH 필터로 열 이름 사용 및 흰색 표지, 토토 베이 주석 및 처리 지침의 처리를 보여줍니다 :
테이블 토토 베이ELEMENTS를 선택하여 작성하십시오 xml $$ <루트 <ementt hello <!-xyxxz- 2a2 <? aaaaa? <!-x- bbb <xxx </x cc </element </root 데이터로서 $$; 토토 베이table을 선택하십시오.* xmlElements, 토토 베이table ( '/root'데이터 열 전달 요소 텍스트); 요소 ----------------------------- Hello2A2 BBBXXXCC
다음 예제는를 보여줍니다.토토 베이namespaces
절을 사용하여 토토 베이 문서와 XPath 표현식에 사용되는 네임 스페이스 목록을 지정할 수 있습니다.
xmldata (data) as (value ( ') <예제 xmlns = "http://example.com/myns"xmlns : b = "http://example.com/b" <item foo = "1"b : bar = "2"/ <item foo = "3"b : bar = "4"/ <item foo = "4"b : bar = "5"/ </example ':: xml) )) 토토 베이table을 선택하십시오.* 토토 베이table에서 (토토 베이namespaces ( 'http://example.com/myns'로 x, 'http://example.com/b'as "b"), '/x : 예/x : 항목' 통과 (토토 베이DATA에서 데이터 선택) 열 foo int path '@foo', bar int path '@b : bar'); foo | 술집 -----+----- 1 | 2 3 | 4 4 | 5 (3 줄)
다음 함수는 관계형 테이블의 내용을 토토 베이 값에 매핑합니다. 토토 베이 내보내기 기능으로 생각할 수 있습니다 :
table_to_토토 베이
(테이블
RegClass
,nulls
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
query_to_토토 베이
(쿼리
텍스트
,nulls
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
cursor_to_토토 베이
(커서
Refcursor
,count
정수
,NULLS
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
table_to_토토 베이
지명 된 테이블의 내용을 매개 변수로 전달테이블
. 그만큼regclass
유형은 선택적 스키마 자격 및 이중 인용문을 포함하여 일반적인 표기법을 사용하여 테이블을 식별하는 문자열을 수락합니다 (참조PostgreSQL : 문서 : 17 : 8.19. 객체 식별자 와이즈 토토자세한 내용).query_to_토토 베이
텍스트가 매개 변수로 전달되는 쿼리를 실행합니다쿼리
그리고 결과 세트를 맵핑합니다.cursor_to_토토 베이
매개 변수로 지정된 커서에서 표시된 행 수를 가져옵니다커서
. 이 변형은 큰 테이블을 매핑 해야하는 경우 권장됩니다. 결과 값은 각 함수에 의해 메모리에 구축되기 때문입니다.
ifTableForest
가 false이고 결과 토토 베이 문서는 다음과 같습니다.
<pableName <줄 <councleName1 data </columnname1 <councleName2 data </columnname2 </row <줄 ... </row ... </tableName
if탁자
사실은 다음과 같이 보이는 토토 베이 컨텐츠 조각입니다.
<tableName <councleName1 data </columnname1 <councleName2 data </columnname2 </tableName <tableName ... </tableName ...
테이블 이름이 없으면 쿼리 또는 커서를 매핑 할 때 문자열테이블
첫 번째 형식으로 사용됩니다Row
두 번째 형식의.
이 형식들 사이의 선택은 사용자에게 달려 있습니다. 첫 번째 형식은 적절한 토토 베이 문서로 많은 응용 프로그램에서 중요합니다. 두 번째 형식은에서 더 유용한 경향이 있습니다.cursor_to_토토 베이
함수 결과 값이 나중에 하나의 문서로 재 조립 될 경우. 위에서 논의 된 토토 베이 컨텐츠 생성 기능, 특히토토 베이element
, 결과를 맛으로 변경하는 데 사용할 수 있습니다.
데이터 값은 함수에 대해 설명한 것과 동일한 방식으로 맵핑됩니다토토 베이element
위.
매개 변수nulls
출력에 널 값이 포함되어야하는지 여부를 결정합니다. true 인 경우 열의 널 값은 다음과 같이 표시됩니다.
<ColumnName XSI : nil = "true"/
여기서XSI
xml schema 인스턴스 용 토토 베이 네임 스페이스 접두사입니다. 적절한 네임 스페이스 선언이 결과 값에 추가됩니다. False 인 경우 NULL 값을 포함하는 열은 출력에서 단순히 생략됩니다.
매개 변수targetns
결과의 원하는 토토 베이 네임 스페이스를 지정합니다. 특정 네임 스페이스가 원하지 않으면 빈 문자열을 전달해야합니다.
다음 함수는 위의 해당 함수에 의해 수행되는 매핑을 설명하는 토토 베이 스키마 문서를 반환합니다.
table_to_토토 베이schema
(테이블
Regclass
,널스
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
query_to_토토 베이schema
(쿼리
텍스트
,NULLS
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
cursor_to_토토 베이schema
(커서
Refcursor
,nulls
부울
,탁자
부울
,targetns
텍스트
) →토토 베이
일치하는 토토 베이 데이터 매핑 및 토토 베이 스키마 문서를 얻기 위해 동일한 매개 변수를 전달하는 것이 중요합니다..
다음 함수는 토토 베이 데이터 매핑과 해당 토토 베이 스키마를 하나의 문서 (또는 Forest)에 생성합니다. 독립적이고 자기 설명 결과가 원하는 곳에서 유용 할 수 있습니다.
table_to_토토 베이_and_xmlschema
(테이블
Regclass
,nulls
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
query_to_토토 베이_and_xmlschema
(쿼리
텍스트
,NULLS
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
또한 전체 스키마 또는 전체 현재 데이터베이스의 유사한 매핑을 생성하기 위해 다음 기능을 사용할 수 있습니다.
schema_to_토토 베이
(스키마
이름
,nulls
부울
,탁자
부울
,targetns
텍스트
) →토토 베이
schema_to_토토 베이schema
(스키마
이름
,nulls
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
schema_to_토토 베이_and_xmlschema
(스키마
이름
,nulls
부울
,탁자
부울
,targetns
텍스트
) →토토 베이
database_to_xml
(nulls
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
database_to_xmlschema
(nulls
부울
,탁자
부울
,targetns
텍스트
) →토토 베이
database_to_xml_and_xmlschema
(nulls
부울
,TableForest
부울
,targetns
텍스트
) →토토 베이
이 기능은 현재 사용자가 읽을 수없는 테이블을 무시합니다. 데이터베이스 전체 기능은 현재 사용자가 가지고 있지 않은 스키마를 추가로 무시합니다usage
(조회) 특권.
이들은 잠재적으로 많은 데이터를 생성하며 메모리에 구축해야합니다. 대형 스키마 또는 데이터베이스의 컨텐츠 매핑을 요청할 때, 커서를 통해서도 테이블을 개별적으로 매핑하는 것이 좋습니다..
스키마 컨텐츠 매핑 결과는 다음과 같습니다.
<schemaname 표 1 매핑 표 2 매핑 ... </schemaname
테이블 매핑 형식이에 따라 다릅니다.TableForest
위에서 설명한대로 매개 변수.
데이터베이스 컨텐츠 매핑의 결과는 다음과 같습니다.
<dbname <schema1name ... </schema1name <Schema2Name ... </schema2name ... </dbname
스키마 매핑이 위와 같은 곳.
이러한 함수에 의해 생성 된 출력을 사용하는 예예 9.1XSLT 스타일 시트를 보여줍니다.table_to_토토 베이_and_xmlschema
테이블 데이터의 테이블 컬링을 포함하는 HTML 문서에. 비슷한 방식으로 이러한 기능의 결과는 다른 토토 베이 기반 형식으로 변환 될 수 있습니다.
예 9.1. SQL/토토 베이 출력을 HTML로 변환하기위한 XSLT 스타일 시트
<? xml 버전 = "1.0"? <xsl : 스타일 버전 = "1.0" xmlns : xsl = "http://www.w3.org/1999/xsl/transform" xmlns : xsd = "http://www.w3.org/2001/xmlschema" xmlns = "http://www.w3.org/1999/xhtml" <xsl : 출력 메소드 = "xml" doctype-system = "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd" doctype-public = "-// w3c/dtd xhtml 1.0 엄격한 // en" 인트 = "예"/ <xsl : 템플릿 매치 = "/*" <xsl : variable name = "schema"select = "// xsd : schema"/ <xsl : 변수 이름 = "tabletypename" select = "$ schema/xsd : element [@name = name (current ())]/@type"/ <xsl : 변수 이름 = "rowtypename" select = "$ schema/xsd : complextype [@name = $ tabletypeName]/xsd : 시퀀스/xsd : 요소 [@name = 'row']/@type"/ <html <헤드 <title <xsl : select value-of select = "name (current ())"/ </title </head <body <테이블 <tr <xsl : for-each select = "$ schema/xsd : complextype [@name = $ rowtypename]/xsd : sequence/xsd : element/@name" <th <xsl : select value-of select = "."/ </th </xsl : for-each </tr <xsl : for-each select = "row" <tr <xsl : for-each select = "*" <td <xsl : select value-of select = "."/ </td </xsl : for-each </tr </xsl : for-each </테이블 </body </html </xsl : 템플릿 </xsl : 스타일 시트
[8]최상위 레벨에서 둘 이상의 요소 노드를 포함하는 결과 또는 요소 외부의 비 whitespace 텍스트가 컨텐츠 양식의 예입니다. 예를 들어 XPath 결과는 형식이 될 수 없습니다. 예를 들어 포함 된 요소에서 선택한 속성 노드를 반환하는 경우. 이러한 결과는 XPATH 1.0에 정의 된대로 문자열 값으로 대체되는 각각의 허용되지 않은 노드와 함께 컨텐츠 형태로 배치됩니다.String
기능.
올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면