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 BII áp dụng Chuyển đổi ngôn ngữ biểu định kiểu mở rộng (XSLT) tùy chỉnh cho Thông báo XML, cho phép bạn chuyển đổi chúng 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 những ứng dụng đó yêu cầu đị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 quy trình chuyển đổi BII.

Chính sách {8/} ->

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

Chính sách BII đơn giản. Chuyển đến ví dụ tiếp theo để xem biểu định kiểu KML đượ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ì phép biến đổi sẽ không xảy ra trừ khi bạn đặt Nguồn thành response (và chính sách này đi kèm với quy trình phản hồi). Nhưng trong trường hợp này, XML cần chuyển đổi nằm trong yêu cầu.

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

<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 đến phần tiếp theo mẫu để xem ví dụ về 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 nêu trong <Source>request</Source> phần tử 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 đã chuyển đổi sau biểu định kiểu XML từ các mẫu này sẽ được áp dụng cho XML .


Tham chiếu phần tử

Định cấu hình chính sách Chuyển đổi {8/} bằng cách sử dụ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ự trong tên này: A-Z0-9._\-$ %. Tuy nhiên, giao diện người dùng Quản lý thực thi thêm các hạn chế, 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à thông tin cần được trích xuất. Thông thường, giá trị này là được đặt thành request hoặc response, tuỳ thuộc vào việc thông báo được chuyển đổi là hướng đến hoặc đầu ra.
  • Nếu thiếu nguồn, thì đó sẽ là một thông báo đơn giản. Ví dụ: <Source>thông báo</Source>
  • Nếu biến nguồn không thể được phân giải hoặc phân giải thành loại không phải là thông báo, thì thì bước chuyển đổi sẽ không thành công.
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 được là của loại Thông báo, tức là loại Thông báo không được là "tin nhắn", "yêu cầu" hoặc "phản hồi". Bạn nên đặt phần tử này thành 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 phép biến đổi, hãy xoá thuộc tính này . Ví dụ: nếu bạn đang chuyển đổi một thư thành HTML thì đừng sử dụng thuộc tính này .

ResourceURL (Bắt buộc) Tệp XML đượ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 tập lệnh XML.
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)

Thông số hỗ trợ sử dụng tham số {8/} trong biểu định kiểu của bạn, trong đó tên bạn thêm ở đây trong chính sách là tên của tham số BII. Ví dụ: nếu bạn nhập tên của "uid", ABI của bạn có thể có dạng như sau: <xsl:param name="uid" select="''"/>).

Tham số nhận giá trị từ tham chiếu đến biến ngữ cảnh (được xác định theo thuộc tính ref) hoặc có value rõ ràng.

Để tham khảo ví dụ và thông tin khác, hãy xem 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 lấy nguồn giá trị từ một biến. Ví dụ: nếu một &quot;uid&quot; tham số cần lấy giá trị từ biến có tên là "authn.uid", tham số phần tử 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 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 thì đừng sử dụng thuộc tính tham chiếu.


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

ViewModel được triển khai trong tệp .xsl độc lập, được lưu trữ trong API trong /resources/xsl. Chính sách {8/} chỉ tham chiếu đến tệp {8/}. Xem Tệp tài nguyên để xem thêm.

Chính sách {8/} yêu cầu hai dữ liệu đầu vào:

  • Tên của biểu định kiểu ViewModel, chứa một bộ quy tắc chuyển đổi) được lưu trữ trong Proxy API trong /resources/xsl
  • Nguồn của XML cần chuyển đổi (thường là yêu cầu hoặc thông báo phản hồi)

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

Apigee Edge dựa vào Saxon Randi trình xử lý và hỗ trợ Kerberos 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