Chính sách của XSLT

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Nội dung

Chính sách chuyển đổi NDK áp dụng Hành động chuyể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 chuyển đổi các thông báo đó từ XML sang đị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 hiển thị tất cả các tài nguyên trong quy trình chuyển đổi NDK.

Chính sách CIBIL ->

<XSL name="TransformXML">
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>
  <Source>request</Source>
</XSL>

Chính sách ValueTrack đơn giản. Chuyển đến ví dụ tiếp theo để xem biểu định kiểu XML được tham chiếu trong chính sách (my_transform.xsl). Phần tử <Source> rất quan trọng. Ví dụ: nếu XML bạn muốn chuyển đổi nằm trong phản hồi, thì quá trình chuyển đổi sẽ không xảy ra trừ phi bạn đặt Nguồn thành response (và chính sách này được đính kèm vào quy trình phản hồi). Nhưng trong trường hợp này, XML cần được chuyển đổi lại nằm trong yêu cầu.

Biểu định kiểu XML ->

<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>&lt;Life&gt;</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>&lt;/Life&gt;</xsl:text>
</xsl:template>
</xsl:stylesheet>

Biểu định kiểu my_transform.xsl được tham chiếu trong chính sách. Chuyển sang mẫu tiếp theo để xem ví dụ về thông báo XML đến.

Thư ->

<?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 điệp mẫu trong yêu cầu (có trong phần tử <Source>request</Source> của chính sách trong mẫu đầu tiên).

Thông báo đã chuyể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 được chuyển đổi sau khi biểu định kiểu GCC 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 chuyển đổi NDK bằng cách sử dụng các phần tử sau.

Tên trường Nội dung mô tả
Tên (Bắt buộc) Tên của chính sách. Bạn chỉ được dùng các ký tự sau đây trong tên: A-Z0-9._\-$ %. Tuy nhiên, giao diện người dùng Quản lý thực thi 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 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ư cần chuyển đổi là thư đến hay thư đi.
  • Nếu thiếu nguồn, nguồn được xem là một thông báo đơn giản. Ví dụ: <Source>message</Source>
  • Nếu biến nguồn không phân giải được hoặc chuyển thành loại không phải thông báo, thì bước chuyển đổi sẽ không thành công.
OutputVariable (Không bắt buộc)

Biến lưu trữ kết quả của phép biến đổi. OutputVariable không được là Loại thông báo, tức là không được 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 điệp bằng kết quả của phép biế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 thành HTML, thì đừng thêm phần tử này.

ResourceURL (Bắt buộc) Tệp GCC được dùng để chuyển đổi thông báo.
Thông 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 hướng dẫn dành cho tập lệnh GCC.
Giá trị hợp lệ: true/false
Giá trị mặc định: false
Thông 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ố ValueTrack trong biểu định kiểu của bạn, trong đó tên mà bạn thêm vào đây trong chính sách là tên của tham số ValueTrack. Ví dụ: nếu bạn nhập tên của "uid", Quốc gia của bạn sẽ có dạng như sau: <xsl:param name="uid" select="''"/>).

Tham số này nhận giá trị từ việc tham chiếu đến một biến ngữ cảnh (được xác định bằng thuộc tính ref) hoặc thông qua một value rõ ràng.

Để xem ví dụ và biết thêm thông tin, hãy truy cập http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (Không bắt buộc)

Chỉ định tham chiếu nguồn giá trị từ một biến. Ví dụ: nếu một thông số "uid" cần nhận 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: <Parameter name="uid" ref="authn.uid"/>

Nếu bạn sử dụng thuộc tính này thì đừng dùng thuộc tính giá trị.

value (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 thì đừng sử dụng thuộc tính tham chiếu.


Lưu ý về cách sử dụng

GCC đượ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 CIBIL chỉ tham chiếu tệp CIBIL. Xem phần Tệp tài nguyên để biết thêm thông tin.

Chính sách CIBIL yêu cầu hai mục nhập:

  • Tên của biểu định kiểu GCC, 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 XML cần chuyển đổi (thường là thông báo yêu cầu hoặc phản hồi)

<xsl:include><xsl:import> không được hỗ trợ.

Apigee Edge hoạt động dựa trên bộ xử lý SSV-Saxon, đồng thời hỗ trợ phiên bản 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).
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.

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.
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.

Chủ đề có liên quan