Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X. Thông tin
Nội dung
Chính sách Biến đổi XSL áp dụng các biến đổi ngôn ngữ biểu định kiểu mở rộng (XSLT) tuỳ chỉnh cho các thông báo XML, cho phép bạn biến đổi các thông báo đó từ XML sang một định dạng khác, chẳng hạn như XML, HTML hoặc văn bản thuần tuý. Chính sách này thường được dùng để tích hợp các ứng dụng hỗ trợ XML, nhưng yêu cầu các định dạng XML khác nhau cho cùng một dữ liệu.
Mẫu
Các mẫu sau đây cho thấy tất cả tài nguyên trong một luồng chuyển đổi XSL.
Chính sách XSL ->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
Chính sách XSL đơn giản. Chuyển đến ví dụ tiếp theo để xem biểu định kiểu XSLT được tham chiếu trong chính sách (my_transform.xsl). Phần tử <Source> là phần tử quan trọng.
Ví dụ: nếu XML mà bạn muốn chuyển đổi nằm trong phản hồi, thì quá trình chuyển đổi sẽ không diễn ra trừ phi bạn đặt Nguồn thành response (và chính sách được đính kèm vào luồng phản hồi). Nhưng trong trường hợp này, XML cần được chuyển đổi nằm trong yêu cầu.
Biểu định kiểu XSLT ->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text"/> <xsl:variable name="newline"> <xsl:text> </xsl:text> </xsl:variable> <xsl:template match="/"> <xsl:text><Life></xsl:text> <xsl:value-of select="$newline"/> <xsl:text>Here are the odd-numbered items from the list:</xsl:text> <xsl:value-of select="$newline"/> <xsl:for-each select="list/listitem"> <xsl:if test="(position() mod 2) = 1"> <xsl:number format="1. "/> <xsl:value-of select="."/> <xsl:value-of select="$newline"/> </xsl:if> </xsl:for-each> <xsl:text></Life></xsl:text> </xsl:template> </xsl:stylesheet>
Bảng định kiểu my_transform.xsl được tham chiếu trong chính sách. Chuyển đến mẫu tiếp theo để xem ví dụ về một thông báo XML đến.
Thông báo ->
<?xml version="1.0"?> <list> <title>A few of my favorite albums</title> <listitem>A Love Supreme</listitem> <listitem>Beat Crazy</listitem> <listitem>Here Come the Warm Jets</listitem> <listitem>Kind of Blue</listitem> <listitem>London Calling</listitem> <listitem>Remain in Light</listitem> <listitem>The Joshua Tree</listitem> <listitem>The Indestructible Beat of Soweto</listitem> </list>
Thông báo mẫu trong yêu cầu (được chỉ ra trong phần tử <Source>request</Source> của chính sách trong mẫu đầu tiên).
Tin nhắn đã được biến đổi
<Life> Here are the odd-numbered items from the list: 1. A Love Supreme 3. Here Come the Warm Jets 5. London Calling 7. The Joshua Tree </Life>
Thông báo đã chuyển đổi sau khi biểu định kiểu XSLT từ các mẫu này được áp dụng cho thông báo XML.
Tham chiếu phần tử
Định cấu hình chính sách Biến đổi XSL bằng các phần tử sau.
| Tên trường | Mô tả | |||
|---|---|---|---|---|
| Tên (Bắt buộc) |
Tên chính sách. Bạn chỉ có thể sử dụng các ký tự sau trong tên:
A-Z0-9._\-$ %. Tuy nhiên, Giao diện người dùng quản lý sẽ áp dụng các hạn chế bổ sung, chẳng hạn như tự động xoá các ký tự không phải là chữ và số.
|
|||
| Nguồn (Không bắt buộc) |
Chứa thông báo mà bạn cần trích xuất thông tin. Thông thường, giá trị này được đặt thành request hoặc response, tuỳ thuộc vào việc thông báo cần được chuyển đổi là thông báo đến hay đi.
|
|||
| OutputVariable (Không bắt buộc) |
Một biến lưu trữ đầu ra của phép biến đổi. OutputVariable không thể thuộc loại Message, tức là không thể là "message", "request" hoặc "response". Bạn nên đặt phần tử này thành một biến tuỳ chỉnh, rồi sử dụng biến đó. Để thay thế nội dung thông báo bằng kết quả của quá trình chuyển đổi, hãy xoá phần tử này. Ví dụ: nếu bạn đang chuyển đổi một thông báo sang HTML, đừng thêm phần tử này. |
|||
| ResourceURL (Bắt buộc) | Tệp XSLT sẽ được dùng để chuyển đổi thông báo. | |||
| Tham số (Không bắt buộc) | ignoreUnresolvedVariables (Không bắt buộc) |
Bỏ qua mọi lỗi biến chưa được giải quyết trong các chỉ dẫn của tập lệnh XSLT.
Giá trị hợp lệ: true/false
Giá trị mặc định: false
|
||
| Tham số (Không bắt buộc) | tên (Bắt buộc) |
Các tham số hỗ trợ việc sử dụng tham số XSL trong biểu định kiểu, trong đó tên bạn thêm ở đây trong chính sách là tên của tham số XSL. Ví dụ: nếu bạn nhập tên là "uid", thì XSL của bạn có thể có dạng như sau: Tham số này nhận giá trị từ một tham chiếu đến biến ngữ cảnh (được xác định bằng thuộc tính Để xem ví dụ và biết thêm thông tin, hãy xem bài đăng trên thẻ Cộng đồng. |
||
| ref (Không bắt buộc) |
Chỉ định thông tin tham chiếu lấy giá trị từ một biến. Ví dụ: nếu một tham số "uid" cần lấy giá trị từ một biến có tên là "authn.uid", thì phần tử Tham số sẽ có dạng như sau: Nếu bạn sử dụng thuộc tính này, đừng sử dụng thuộc tính giá trị. |
|||
| giá trị (Không bắt buộc) |
Bạn có thể sử dụng thuộc tính này để mã hoá cứng giá trị của tham số. Nếu bạn sử dụng thuộc tính này, đừng sử dụng thuộc tính ref. |
|||
Lưu ý về cách sử dụng
XSLT được triển khai trong một tệp .xsl độc lập, được lưu trữ trong proxy API trong /resources/xsl. Chính sách XSL chỉ tham chiếu đến tệp XSL. Hãy xem phần Tệp tài nguyên để biết thêm thông tin.
Chính sách XSL yêu cầu 2 đầu vào:
- Tên của một biểu định kiểu XSLT (chứa một tập hợp các quy tắc chuyển đổi) được lưu trữ trong proxy API trong
/resources/xsl - Nguồn của XML cần được chuyển đổi (thường là thông báo yêu cầu hoặc phản hồi)
<xsl:include> và <xsl:import> không được hỗ trợ.
Apigee Edge dựa vào trình xử lý Saxon XSLT và hỗ trợ XSLT 1.0 và 2.0.
Tham chiếu lỗi
Lỗi thời gian chạy
Những lỗi này có thể xảy ra khi thực thi chính sách.
| Mã lỗi | Trạng thái HTTP | Nguyên nhân | Khắc phục |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Lỗi này xảy ra nếu thông báo hoặc biến chuỗi được chỉ định trong phần tử <Source> của
chính sách Chuyển đổi NDK nằm ngoài phạm vi (không có sẵn trong quy trình cụ thể nơi
chính sách đang được thực thi) hoặc không thể được giải quyết (không được xác định).
|
build |
steps.xsl.XSLEvaluationFailed |
500 | Lỗi này xảy ra nếu tải trọng XML đầu vào không có sẵn/không đúng định dạng hoặc chính sách NDKTransform bị lỗi/không thể chuyển đổi tệp XML đầu vào dựa trên quy tắc chuyển đổi được cung cấp trong tệp NDK. Có thể có nhiều nguyên nhân khác nhau khiến chính sách NDKTransform không thành công. Lý do không thực hiện được trong thông báo lỗi sẽ cung cấp thêm thông tin về nguyên nhân. | build |
Lỗi triển khai
Những lỗi này có thể xảy ra khi bạn triển khai proxy chứa chính sách này.
| Tên lỗi | Nguyên nhân | Khắc phục |
|---|---|---|
XSLEmptyResourceUrl |
Nếu phần tử <ResourceURL> trong chính sách Chuyển đổi NDK trống, thì quá trình triển khai proxy API sẽ không thành công. |
build |
XSLInvalidResourceType |
Nếu loại tài nguyên được chỉ định trong phần tử <ResourceURL> của chính sách Chuyển đổi NDK không phải thuộc loại xsl thì sẽ không triển khai được proxy API. |
build |