PostgreSQL: kèo chấp bóng đá hôm nay liệu: 9 | |||
---|---|---|---|
prev | UP | Phụ lục F. kèo bóng đá c1 mô -đun được cung cấp bổ sung | NEXT |
TheXML2Mô -đun cung cấp chức năng kèo bóng đá c1 vấn XPath và XSLT.
từkèo bóng đá c18.3, có chức năng liên quan đến XML dựa trên tiêu chuẩn SQL/XML trong máy chủ lõi. Chức năng đó bao gồm kiểm tra cú pháp XML và truy vấn XPath, đó là những gì mô -đun này làm, và hơn thế nữa, nhưng API hoàn toàn không tương thích. Người ta có kế hoạch rằng mô -đun này sẽ bị xóa trong phiên bản kèo bóng đá c1 trong tương lai có lợi cho API tiêu chuẩn mới hơn, vì vậy bạn được khuyến khích thử chuyển đổi các ứng dụng của mình. Nếu bạn thấy rằng một số chức năng của mô -đun này không có sẵn ở dạng phù hợp với API mới hơn, vui lòng giải thích vấn đề của bạn với<9805_9841
để có thể giải quyết sự thiếu hụt.
Bảng F-34Hiển thị kèo bóng đá c1 chức năng được cung cấp bởi mô -đun này. kèo bóng đá c1 chức năng này cung cấp kèo bóng đá c1 truy vấn XML và Xpath đơn giản. Tất cả kèo bóng đá c1 đối số thuộc loạiText, vì vậy đối với sự ngắn gọn không được hiển thị.
Bảng F-34. kèo bóng đá c1 năng
function | return | Mô tả |
---|---|---|
xml_is_well_formed (kèo bóng đá c1) |
bool |
Điều này phân tích văn bản tài liệu trong tham số của nó và trả về true nếu tài liệu được hình thành tốt XML. (Lưu ý: Trước kèo bóng đá c1 8.2, chức năng này được gọi |
XPath_String (kèo bóng đá c1, truy vấn) |
Text |
Các chức năng này đánh giá truy vấn XPath trên kèo bóng đá c1 được cung cấp và chuyển kết quả cho loại được chỉ định. |
11321_11352 |
float4 | |
xpath_bool (kèo bóng đá c1, truy vấn) |
bool | |
xpath_nodeset (kèo bóng đá c1, truy vấn, toptag, itemTag) |
Text |
Điều này đánh giá truy vấn trên kèo bóng đá c1 và kết quả trong các thẻ XML. Nếu kết quả là đa trị, đầu ra sẽ trông giống như: 11807_11952 NếuTopTaghoặcitemTaglà một chuỗi trống, thẻ có liên quan bị bỏ qua. |
xpath_nodeset (kèo bóng đá c1, truy vấn) |
Text |
như |
xpath_nodeset (kèo bóng đá c1, truy vấn, itemTag) |
Text |
như |
xpath_list (kèo bóng đá c1, truy vấn, phân tách) |
Text |
Hàm này trả về nhiều giá trị được phân tách bởi bộ phân cách được chỉ định, ví dụGiá trị 1, Giá trị 2, Giá trị 3Nếu dấu tách là,. |
xpath_list (kèo bóng đá c1, truy vấn) |
Text | Đây là một trình bao bọc cho kèo bóng đá c1 năng trên sử dụng,làm dấu phân cách. |
13350_13452
XPath_Table
13501_13814Bảng F-35.
Bảng F-35.xpath_table
tham số
tham số | Mô tả |
---|---|
Key |
Tên của"Key"Trường - Đây chỉ là một trường được sử dụng làm cột đầu tiên của bảng đầu ra, tức là, nó xác định bản ghi mà mỗi hàng đầu ra xuất hiện (xem ghi chú bên dưới về nhiều giá trị) |
Document |
Tên của trường chứa kèo bóng đá c1 XML |
Mối quan hệ |
Tên của bảng hoặc xem có chứa kèo bóng đá c1 |
XPaths |
Một hoặc nhiều biểu thức XPath, được phân tách bởi| |
Tiêu chí |
Nội dung của mệnh đề WHERE. Điều này không thể được bỏ qua, vì vậy hãy sử dụngTRUEhoặc1 = 1Nếu bạn muốn xử lý tất cả kèo bóng đá c1 hàng trong quan hệ |
15161_15310
15336_15419
Vì vậy, kèo bóng đá c1 tham số đó có thể làbất cứ điều gìhợp lệ ở các vị trí cụ thể đó. Kết quả từ lựa chọn này cần trả về chính xác hai cột (nó sẽ trừ khi bạn cố gắng liệt kê nhiều trường cho khóa hoặc kèo bóng đá c1). Coi chừng rằng cách tiếp cận đơn giản này đòi hỏi bạn phải xác nhận bất kỳ giá trị do người dùng nào cung cấp để tránh các cuộc tấn công tiêm SQL.
Hàm phải được sử dụng trong AtừBiểu thức, vớiASmệnh đề để chỉ định kèo bóng đá c1 cột đầu ra; Ví dụ
Chọn * Từ xpath_table ('article_id', 'Bài báo_xml', 'Bài báo', '/Bài báo/Tác giả |/Bài báo/Trang |/Bài báo/Tiêu đề', 'Date_Endered' '2003-01-01' '') Như t (intent_id integer, văn bản tác giả, số nguyên trang_count, văn bản tiêu đề);
TheASmệnh đề xác định tên và loại của kèo bóng đá c1 cột trong bảng đầu ra. Đầu tiên là"Key"Trường và phần còn lại tương ứng với kèo bóng đá c1 truy vấn XPath. Nếu có nhiều truy vấn XPath hơn kèo bóng đá c1 cột kết quả, kèo bóng đá c1 truy vấn bổ sung sẽ bị bỏ qua. Nếu có nhiều cột kết quả hơn kèo bóng đá c1 truy vấn XPath, kèo bóng đá c1 cột bổ sung sẽ không có.
Lưu ý rằng ví dụ này xác địnhpage_count16747_17037ASYêu cầu mệnh đề). Một lỗi sẽ dẫn đến nếu nó không thể làm điều này - ví dụ: nếu kết quả trống - vì vậy bạn có thể muốn chỉ bám vàoTextLà loại cột nếu bạn nghĩ rằng dữ kèo bóng đá c1 của bạn có bất kỳ vấn đề nào.
Cuộc gọiChọnCâu lệnh không nhất thiết phải chỉ làChọn *- Nó có thể tham chiếu kèo bóng đá c1 cột đầu ra theo tên hoặc tham gia với kèo bóng đá c1 bảng khác. Hàm tạo ra một bảng ảo mà bạn có thể thực hiện bất kỳ thao tác nào bạn muốn (ví dụ: tập hợp, nối, sắp xếp, v.v.). Vì vậy, chúng tôi cũng có thể có:
Chọn T.Title, P.Fullname, P.Email Từ xpath_table ('artical_id', 'article_xml', 'bài viết', '/Bài báo/Tiêu đề |/Bài báo/Tác giả/@ID', 'XPath_String (article_xml,' '/article/@date' ')' '2003-03-20' '')) Như t (intent_id integer, văn bản tiêu đề, số nguyên Author_id), tblpeopleinfo như p WHERE T.Author_id = p.person_id;
như một ví dụ phức tạp hơn. Tất nhiên, bạn có thể bọc tất cả những điều này trong một quan điểm để thuận tiện.
Thexpath_table
Hàm giả định rằng kết quả của mỗi truy vấn XPath có thể được đa trị, do đó số lượng hàng được trả về bởi hàm có thể không giống với số lượng kèo bóng đá c1 đầu vào. Hàng thứ nhất được trả về chứa kết quả đầu tiên từ mỗi truy vấn, hàng thứ hai là kết quả thứ hai từ mỗi truy vấn. Nếu một trong các truy vấn có ít giá trị hơn các giá trị khác, các giá trị null sẽ được trả về thay thế.
18687_19063
Tạo thử nghiệm bảng ( ID int khóa chính, Văn bản XML ); Chèn vào kèo bóng đá c1 giá trị kiểm tra (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 '); Chèn vào kèo bóng đá c1 giá trị kiểm tra (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 '); Chọn * Từ xpath_table ('id', 'xml', 'test', '/doc/@num |/doc/line/@num |/doc/line/a |/doc/line/b |/doc/line/c', 'ĐÚNG VẬY') Như T (ID int, doc_num varchar (10), line_num varchar (10), val1 int, val2 int, val3 int) WHERE ID = 1 Đặt hàng của doc_num, line_num ID | doc_num | line_num | val1 | val2 | val3 ----+----------+----------+------+------+------ 1 | C1 | L1 | 1 | 2 | 3 1 | | L2 | 11 | 22 | 33
để nhậndoc_numTrên mỗi dòng, giải pháp là sử dụng hai lời mời củaxpath_table
và tham gia kết quả:
20347_20903
kèo bóng đá c1 chức năng sau có sẵn nếu LibXSLT được cài đặt:
21248_21323
21331_21430paramlist21462_21556a = 1, b = 2. Lưu ý rằng phân tích phân tích tham số rất đơn giản: Giá trị tham số không thể chứa dấu phẩy!
Ngoài ra còn có phiên bản hai tham số củaXSLT_Process
không chuyển bất kỳ tham số nào cho phép biến đổi.
John Grey<jgray@azuli.co.uk
Phát triển mô -đun này được tài trợ bởi Torchbox Ltd. (www.torchbox.com). Nó có cùng giấy phép BSD như kèo bóng đá c1.