2025 년 7 월 17 일 : | 윈 토토 : 윈 토토 18 베타
이 문서는 지원되지 않는 버전의 토토 핫을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다4CL2토토 캔CL29버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.42. 토토 핫2

the토토 핫2모듈은 xpath를 제공합니다 쿼리 및 XSLT 기능.

F.42.1. 감가 상각 통지

from토토 핫8.3 on, SQL/XML을 기반으로 XML 관련 기능이 있습니다 핵심 서버의 표준. 그 기능은 XML을 다룹니다 구문 확인 및 XPath 쿼리는이 모듈입니다. 그 이상이지만 API는 전혀 호환되지 않습니다. 그것은 이 모듈은 향후 버전에서 제거 될 계획입니다. 새로운 표준 API에 유리한 토토 핫이므로 응용 프로그램을 변환하는 것이 좋습니다. 당신이 찾으면 이 모듈의 일부 기능을 사용할 수 없음 새로운 API와 적절한 형태로 설명하십시오. 문제부족을 해결할 수 있도록.

F.42.2. 기능 설명

표 F-31이 모듈에서 제공 한 함수를 보여줍니다. 이러한 기능 간단한 토토 핫 파싱 및 XPath 쿼리를 제공하십시오. 모두 인수는 유형입니다텍스트표시되지 않은 간결성.

표 F-31. 기능

기능 반환 설명
토토 핫_is_well_formed (Document) bool

이것은 매개 변수의 문서 텍스트를 구문 분석합니다 문서가 잘 형성된 XML 인 경우 true를 반환합니다. (참고 : 토토 핫 8.2 이전에는이 기능이있었습니다 라고 불리는토토 핫_valid (). 그것은 타당성 이후의 잘못된 이름입니다 전형은 토토 핫에서 다른 의미를 갖습니다. 그만큼 이전 이름은 여전히 사용 가능하지만 더 이상 사용되지 않습니다.)

xpath_string (문서, 질문) 텍스트

이 함수는 XPath 쿼리를 평가합니다 문서를 제공하고 결과를 The 지정된 유형.

xpath_number (문서, 질문) float4
xpath_bool (문서, 질문) bool
xpath_nodeset (문서, 쿼리, TopTag, ItemTag) 텍스트

이것은 문서의 쿼리를 평가하고 랩합니다 토토 핫 태그가 발생합니다. 결과가 다수 인 경우 출력은 다음과 같습니다.

<poptag
XML 조각 일 수있는 <Ittag 값 1 </itemtag
<Ittag value 2 .... </itemtag
</toptag

IF 중Toptag또는ItemTag빈 문자열입니다. 관련 태그는 생략됩니다.

xpath_nodeset (문서, 질문) 텍스트

Likexpath_nodeset (문서, 쿼리, Toptag, ItemTag)그러나 결과는 두 태그를 모두 생략합니다.

xpath_nodeset (문서, 쿼리, ItemTag) 텍스트

Likexpath_nodeset (문서, 쿼리, Toptag, ItemTag)그러나 결과는 Toptag를 생략합니다.

xpath_list (문서, 쿼리, 분리 기호) 텍스트

이 함수는 분리 된 여러 값을 반환합니다 지정된 분리기, 예를 들어값 1, 값 2, 값 3분리기 인 경우 이다,.

xpath_list (문서, 질문) 텍스트 이것은 위의 함수를위한 래퍼입니다,분리기로

F.42.3.xpath_table

xpath_table (텍스트 키, 텍스트 문서, 텍스트 관계, 텍스트 xpaths, 텍스트 기준)을 반환합니다.

xpath_table는 테이블입니다 각 세트에서 XPath 쿼리 세트를 평가하는 함수 문서의 결과를 테이블로 반환합니다. 기본 원본 문서 테이블의 키 필드는 결과 세트가 쉽게 조인에 사용됩니다. 매개 변수는에 설명되어 있습니다.표 F-32.

표 F-32.xpath_table매개 변수

매개 변수 설명

이름의 이름"키"필드 - 이것은 단지 첫 번째로 사용되는 필드입니다. 출력 테이블의 열, 즉 각 출력 행이 온 레코드 (참고 참조 아래의 여러 값에 대해)

Document

토토 핫을 포함하는 필드의 이름 문서

관계

포함 된 테이블 또는보기의 이름 서류

xpaths

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

기준

WHERE 절의 내용. 이것은 할 수 없습니다 생략하니true또는1 = 1처리하려는 경우 관계의 모든 행

이 매개 변수 (XPath 문자열 제외)는 정당합니다 일반 SQL Select 문으로 대체하므로 일부가 있습니다. 유연성 - 진술은입니다.

<key, <cument를 선택하십시오 <관계 여기서 <Criteria

따라서 해당 매개 변수가 될 수 있습니다무엇이든유효합니다 특정 위치. 이 선택의 결과는 필요합니다 정확히 두 개의 열을 반환합니다 (시도하지 않는 한 키 또는 문서에 대한 여러 필드를 나열하십시오). 이것을 조심하십시오 단순한 접근 방식은 귀하가 검증해야합니다 SQL 주입 공격을 피하기 위해 사용자가 공급 한 값.

함수는 a에서 사용해야합니다.Fromexpression, anas출력 열을 지정하려는 조항; ~을 위한 예

선택 *에서
xpath_table ( 'article_id',
            'article_xml',
            '조항',
            '/기사/저자 |/기사/페이지 |/기사/제목',
            'date_entered' ''2003-01-01 '' ')
as t (article_id 정수, 저자 텍스트, page_count 정수, 제목 텍스트);

theas조항은 이름을 정의합니다 출력 테이블의 열 유형. 첫 번째는입니다."키"필드 및 나머지는 해당합니다 XPath 쿼리에. XPath 쿼리가 더 많은 경우 결과 열, 추가 쿼리는 무시됩니다. 있다면 xpath 쿼리보다 더 많은 결과 열이 있습니다. 추가 열은 null.

이 예제는를 정의한다는 것을 알 수 있습니다.page_count정수로서의 결과 열. 그만큼 함수는 내부적으로 문자열 표현을 처리합니다 당신은 당신이 출력에서 정수를 원한다고 말하면 XPath 결과의 문자열 표현 및 토토 핫 사용 입력 기능은 정수 (또는 무엇이든 입력as조항 요청). 오류 이 작업을 수행 할 수 없으면 결과가 발생합니다. 예를 들어 결과가 비어 - 그래서 당신은 그냥 고집하고 싶을 수도 있습니다텍스트데이터가 있다고 생각하는 경우 열 유형으로 모든 문제.

전화select진술 반드시 정당한 것은 아닙니다선택 *- 이름 또는 가입으로 출력 열을 참조 할 수 있습니다. 다른 테이블에. 이 함수는 가상 테이블을 생성합니다 원하는 작업을 수행 할 수 있습니다 (예 : 집계, 결합, 정렬 등). 그래서 우리는 또한 가질 수 있습니다 :

T.Title, P.FullName, P.Email을 선택하십시오
xpath_table에서 ( 'article_id', 'article_xml', 'articles',
                 '/기사/제목 |/article/author/@id',
                 'xpath_string (article_xml,' '/article/@date' ')' '2003-03-20' '')
       t (article_id 정수, 제목 텍스트, author_id 정수),
     p
여기서 t.author_id = p.person_id;

보다 복잡한 예입니다. 물론, 당신은 모두 포장 할 수 있습니다 편의를위한 관점에서 이것의.

F.42.3.1. 다중 결과

thexpath_table함수 각 XPath 쿼리의 결과가 다중 값, 따라서 함수에 의해 반환 된 행의 수 입력 문서의 수와 같지 않을 수 있습니다. 그만큼 첫 번째 행 반환 된 첫 번째 행에는 각 쿼리의 첫 번째 결과가 포함됩니다. 두 번째 행은 각 쿼리에서 두 번째로 결과됩니다. 하나라면 쿼리는 다른 값보다 값이 적습니다. 대신 반환됩니다.

경우에 따라 사용자는 주어진 XPATH 쿼리를 알게됩니다. 단일 결과 만 반환합니다 (아마도 고유 한 문서 식별자) - XPath 쿼리 반환과 함께 사용되는 경우 여러 결과, 단일 값 결과는 만 나타납니다 결과의 첫 번째 행에서. 이것에 대한 해결책은 다음과 같습니다 더 간단한 XPath에 대한 조인의 일부로 키 필드를 사용하십시오. 질문. 예를 들어 :

테이블 테스트 생성 (
    ID int 기본 키,
    XML 텍스트
);

테스트 값 (1, '<doc num = "c1"에 삽입하십시오
<line num = "l1" <a 1 </a <b 2 </b <c 3 </c </line
<line num = "l2" <a 11 </a <b 22 </b <c 33 </c </line
</doc ');

테스트 값 (2, '<doc num = "c2"에 삽입하십시오
<line num = "l1" <a 111 </a <b 222 </b <c 333 </c </line
<line num = "l2" <a 111 </a <b 222 </b <c 333 </c </line
</doc ');

*에서 선택하십시오
  xpath_table ( 'id', 'xml', 'test',
              '/doc/num |/doc/line/@num |/doc/line/a |/doc/line/b |/doc/line/c',
              '진실')
  A로 t (id int, doc_num varchar (10), line_num varchar (10), val1 int, val2 int, val3 int)
여기서 id = 1 Doc_num, line_num의 주문

 id | doc_num | line_num | val1 | Val2 | Val3
----+--------+----------+------+------+------
  1 | C1 | L1 |    1 |    2 |    3
  1 |         | L2 |   11 |   22 |   33

getdoc_num모든 라인에서 솔루션은의 두 가지 호출을 사용하는 것입니다.xpath_table결과에 참여하십시오 :

select t.*, i.doc_num from
  xpath_table ( 'id', 'xml', 'test',
              '/doc/line/@num |/doc/line/a |/doc/line/b |/doc/line/c',
              '진실')
    t (Id int, line_num varchar (10), Val1 Int, Val2 int, Val3 Int),
  xpath_table ( 'id', 'xml', 'test', '/doc/@num', 'true')))
    I로 (ID int, doc_num varchar (10))
여기서 i.id = t.id 및 i.id = 1
doc_num, line_num의 주문;

 id | line_num | val1 | Val2 | val3 | doc_num
----+----------+------+------+------+-------
  1 | L1 |    1 |    2 |    3 | C1
  1 | L2 |   11 |   22 |   33 | C1
(2 줄)

F.42.4. XSLT 함수

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

F.42.4.1.XSLT_PROCESS

XSLT_PROCESS (텍스트 문서, 텍스트 스타일 시트, 텍스트 매개 변수) 텍스트를 반환

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

의 2 파라미터 버전도 있습니다.XSLT_PROCESS변환에 대한 매개 변수.

F.42.5. 작가

John Grey

이 모듈의 개발은 Torchbox Ltd.가 후원했습니다. (www.torchbox.com). BSD 라이센스와 동일한 BSD 라이센스가 있습니다 토토 핫.