F.45. xml2

xml2모듈은 XPath 쿼리 및 XSLT 기능을 제공합니다.

F.45.1. 지원 중단 알림

발신포스트그레SQL8.3 on에는 코어 서버에 SQL/XML 표준을 기반으로 한 XML 관련 기능이 있습니다. 해당 기능에는 이 모듈이 수행하는 작업인 XML 구문 검사 및 XPath 쿼리 등이 포함되지만 API는 전혀 호환되지 않습니다. 이 모듈은 최신 표준 API를 위해 PostgreSQL의 향후 버전에서 제거될 예정이므로 애플리케이션을 변환해 보는 것이 좋습니다. 이 모듈의 일부 기능을 최신 API에서 적절한 형식으로 사용할 수 없는 경우 문제를 설명해주세요.결핍이 해결될 수 있도록.

F.45.2. 기능 설명

표 F.34이 모듈에서 제공하는 기능을 보여줍니다. 이러한 함수는 간단한 XML 구문 분석 및 XPath 쿼리를 제공합니다.

표 F.34. xml2기능

기능

설명

xml_valid ( 토토 사이트 순위 텍스트 ) → 부울

주어진 토토 사이트 순위를 분석하고 토토 사이트 순위가 올바른 형식의 XML이면 true를 반환합니다. (참고: 이는 표준 PostgreSQL 함수의 별칭입니다.xml_is_well_formed(). 이름xml_valid()타당성과 올바른 형식은 XML에서 서로 다른 의미를 갖기 때문에 기술적으로 올바르지 않습니다.)

xpath_stri토토 사이트 순위 ( 토토 사이트 순위 텍스트, 질의 텍스트 ) → 텍스트

제공된 토토 사이트 순위에 대한 XPath 쿼리를 평가하고 결과를 다음으로 변환합니다.텍스트.

xpath_number ( 토토 사이트 순위 텍스트, 질의 텍스트 ) → 진짜

제공된 토토 사이트 순위에 대한 XPath 쿼리를 평가하고 결과를 다음으로 변환합니다.진짜.

xpath_bool ( 토토 사이트 순위 텍스트, 질의 텍스트 ) → 부울

제공된 토토 사이트 순위에 대한 XPath 쿼리를 평가하고 결과를 다음으로 변환합니다.부울.

xpath_nodeset ( 토토 사이트 순위 텍스트, 질의 텍스트, 상위태그 텍스트, 항목태그 텍스트 ) → 텍스트

토토 사이트 순위에 대한 쿼리를 평가하고 결과를 XML 태그로 래핑합니다. 결과가 다중값인 경우 출력은 다음과 같습니다.

<상위 태그
<itemtagXML 조각일 수 있는 값 1</itemtag
<itemtag값 2....</itemtag
</toptag

둘 중 하나라면상위 태그또는항목태그빈 문자열이므로 해당 태그는 생략됩니다.

xpath_nodeset ( 토토 사이트 순위 텍스트, 질의 텍스트, 항목태그 텍스트 ) → 텍스트

좋아요xpath_nodeset(토토 사이트 순위, 쿼리, toptag, itemtag)그러나 결과는 생략됨상위 태그.

xpath_nodeset ( 토토 사이트 순위 텍스트, 질의 텍스트 ) → 텍스트

좋아요xpath_nodeset(토토 사이트 순위, 쿼리, toptag, itemtag)그러나 결과에는 두 태그가 모두 생략되었습니다.

xpath_list ( 토토 사이트 순위 텍스트, 질의 텍스트, 구분자 텍스트 ) → 텍스트

토토 사이트 순위에 대한 쿼리를 평가하고 지정된 구분 기호로 구분된 여러 값을 반환합니다. 예를 들어값 1,값 2,값 3if구분자is,.

xpath_list ( 토토 사이트 순위 텍스트, 질의 텍스트 ) → 텍스트

이것은 다음을 사용하는 위 함수에 대한 래퍼입니다.,구분자로.


F.45.3. xpath_table

xpath_table(텍스트 키, 텍스트 토토 사이트 순위, 텍스트 관계, 텍스트 xpath, 텍스트 기준)은 레코드 집합을 반환합니다.

xpath_table은 각 토토 사이트 순위 집합에 대한 XPath 쿼리 집합을 평가하고 결과를 테이블로 반환하는 테이블 함수입니다. 원본 토토 사이트 순위 테이블의 기본 키 필드는 결과의 첫 번째 열로 반환되므로 결과 집합을 조인에 쉽게 사용할 수 있습니다. 매개변수는 다음에 설명되어 있습니다.표 F.35.

표 F.35. xpath_table매개변수

매개변수 설명

이름필드 — 이는 출력 테이블의 첫 번째 열로 사용되는 필드입니다. 즉, 각 출력 행의 출처 레코드를 식별합니다(여러 값에 대한 아래 참고 사항 참조).

토토 사이트 순위

XML 토토 사이트 순위가 포함된 필드의 이름

관계

토토 사이트 순위가 포함된 테이블 또는 뷰의 이름

xpaths

하나 이상의 XPath 표현식, 구분|

기준

WHERE 절의 내용. 생략할 수 없으므로 를 사용하세요.또는1=1관계의 모든 행을 처리하려는 경우


이러한 매개변수(XPath 문자열 제외)는 일반 SQL SELECT 문으로 대체되므로 유연성이 있습니다. 문은 다음과 같습니다.

SELECT <키, <토토 사이트 순위 FROM <관계 WHERE <기준

그러므로 해당 매개변수는무엇이든해당 특정 위치에서 유효합니다. 이 SELECT의 결과는 정확히 두 개의 열을 반환해야 합니다(키 또는 토토 사이트 순위에 대해 여러 필드를 나열하려고 시도하지 않는 한 반환됩니다). 이 단순한 접근 방식을 사용하려면 SQL 삽입 공격을 방지하기 위해 사용자가 제공한 값의 유효성을 검사해야 합니다.

함수는 다음에서 사용되어야 합니다.발신표현식,AS절은 출력 열을 지정합니다. 예를 들어

SELECT * FROM
xpath_table('article_id',
            'article_xml',
            '기사',
            '/기사/저자|/기사/페이지|/기사/제목',
            '입력한 날짜  ''2003-01-01'' ')
AS t(article_id 정수, 작성자 텍스트, 페이지 수 정수, 제목 텍스트);

AS절은 출력 테이블의 열 이름과 유형을 정의합니다. 첫 번째는필드와 나머지는 XPath 쿼리에 해당합니다. 결과 열보다 XPath 쿼리가 더 많은 경우 추가 쿼리는 무시됩니다. XPath 쿼리보다 결과 열이 더 많은 경우 추가 열은 NULL이 됩니다.

이 예는 다음을 정의합니다.page_count결과 열을 정수로 표시합니다. 함수는 내부적으로 문자열 표현을 처리하므로 출력에 정수를 원한다고 말하면 XPath 결과의 문자열 표현을 취하고 PostgreSQL 입력 함수를 사용하여 이를 정수(또는 어떤 유형이든)로 변환합니다.AS절 요청). 이를 수행할 수 없으면 오류가 발생합니다(예: 결과가 비어 있는 경우). 따라서 계속 진행하는 것이 좋습니다.텍스트데이터에 문제가 있다고 생각되면 열 유형으로 사용하세요.

소명선택진술은 반드시 정당할 필요는 없습니다선택 *— 출력 열을 이름으로 참조하거나 다른 테이블에 조인할 수 있습니다. 이 함수는 원하는 작업(예: 집계, 조인, 정렬 등)을 수행할 수 있는 가상 테이블을 생성합니다. 따라서 다음도 가질 수 있습니다.

SELECT t.title, p.fullname, p.email
FROM xpath_table('article_id', 'article_xml', 'articles',
                 '/기사/제목|/기사/저자/@id',
                 'xpath_stri토토 사이트 순위(article_xml,''/article/@date'')  ''2003-03-20'' ')
       AS t(article_id 정수, 제목 텍스트, 작성자_id 정수),
     tblPeopleInfo AS p
t.author_id = p.person_id;

더 복잡한 예입니다. 물론 편의를 위해 이 모든 것을 뷰에 래핑할 수 있습니다.

F.45.3.1. 다중값 결과

xpath_table함수는 각 XPath 쿼리의 결과가 다중 값일 수 있다고 가정하므로 함수에서 반환된 행 수가 입력 토토 사이트 순위 수와 동일하지 않을 수 있습니다. 반환된 첫 번째 행에는 각 쿼리의 첫 번째 결과가 포함되고, 두 번째 행에는 각 쿼리의 두 번째 결과가 포함됩니다. 쿼리 중 하나의 값이 다른 쿼리보다 적으면 대신 null 값이 반환됩니다.

경우에 따라 사용자는 주어진 XPath 쿼리가 단일 결과(아마도 고유한 토토 사이트 순위 식별자)만 반환한다는 것을 알게 됩니다. 여러 결과를 반환하는 XPath 쿼리와 함께 사용하면 단일 값 결과는 결과의 첫 번째 행에만 나타납니다. 이에 대한 해결책은 더 간단한 XPath 쿼리에 대한 조인의 일부로 키 필드를 사용하는 것입니다. 예를 들어:

CREATE TABLE 테스트(
    ID int 기본 키,
    XML 텍스트
);

테스트 값에 삽입(1, '<doc num="C1"
<line num="L1"<a1</a<b2</b<c3</c</line
<line num="L2"<a11</a<b22</b<c33</c</line
</doc');

테스트 값에 삽입(2, '<doc num="C2"
<line num="L1"<a111</a<b222</b<c333</c</line
<line num="L2"<a111</a<b222</b<c333</c</line
</doc');

선택 *에서
  xpath_table('id','xml','테스트',
              '/doc/@num|/doc/line/@num|/doc/line/a|/doc/line/b|/doc/line/c',
              '사실')
  AS t(id int, doc_num varchar(10), line_num varchar(10), val1 int, val2 int, val3 int)
WHERE id = 1 ORDER BY doc_num, line_num

 아이디 | 토토 사이트 순위_번호 | 라인_번호 | 발1 | 발2 | 발3
----+---------+---------+------+------+------
  1 | C1 | L1 |    1 |    2 |    3
  1 |         | L2 |   11 |   22 |   33

얻으려면doc_num모든 줄에서 해결책은 두 번의 호출을 사용하는 것입니다.xpath_table그리고 결과에 참여하세요:

다음에서 t.*,i.doc_num 선택
  xpath_table('id', 'xml', '테스트',
              '/doc/line/@num|/doc/line/a|/doc/line/b|/doc/line/c',
              '사실')
    AS t(id int, line_num varchar(10), val1 int, val2 int, val3 int),
  xpath_table('id', 'xml', 'test', '/doc/@num', 'true')
    AS i(id int, doc_num varchar(10))
i.id=t.id AND i.id=1인 경우
ORDER BY doc_num, line_num;

 아이디 | 라인_번호 | 발1 | 발2 | 발3 | 토토 사이트 순위_번호
----+----------+------+------+------+---------
  1 | L1 |    1 |    2 |    3 | C1
  1 | L2 |   11 |   22 |   33 | C1
(2행)

F.45.4. XSLT 함수

libxslt가 설치된 경우 다음 기능을 사용할 수 있습니다:

F.45.4.1. xslt_process

xslt_process(text document, text stylesheet, text paramlist)는 텍스트를 반환합니다.

이 함수는 XSL 스타일시트를 토토 사이트 순위에 적용하고 변환된 결과를 반환합니다.매개변수 목록형식에 지정된 변환에 사용될 매개변수 할당 목록입니다.a=1,b=2. 매개변수 구문 분석은 매우 간단합니다. 매개변수 값에는 쉼표가 포함될 수 없습니다.

다음의 두 매개변수 버전도 있습니다.xslt_process변환에 매개변수를 전달하지 않습니다.

F.45.5. 작성자

존 그레이

이 모듈의 개발은 Torchbox Ltd.(www.torchbox.com)의 후원을 받았습니다. PostgreSQL과 동일한 BSD 라이센스를 가지고 있습니다.

수정사항 제출

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