خط مشی XSLTransform

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

چی

خط‌مشی XSL Transform تغییر شکل‌های زبان صفحه سبک سفارشی (XSLT) را به پیام‌های XML اعمال می‌کند و به شما امکان می‌دهد آنها را از XML به قالب دیگری مانند XML، HTML یا متن ساده تبدیل کنید. این خط‌مشی اغلب برای یکپارچه‌سازی برنامه‌هایی استفاده می‌شود که از XML پشتیبانی می‌کنند، اما به فرمت‌های XML متفاوت برای داده‌های مشابه نیاز دارند.

نمونه ها

نمونه های زیر تمام منابع یک جریان تبدیل XSL را نشان می دهد.

خط مشی XSL ->

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

خط مشی ساده XSL. برای مشاهده شیوه نامه XSLT که در خط مشی ارجاع داده شده است، به مثال بعدی بروید ( my_transform.xsl ). عنصر <Source> مهم است. به عنوان مثال، اگر XML مورد نظر برای تبدیل در پاسخ باشد، تغییر شکل نمی‌یابد مگر اینکه منبع را روی response تنظیم کنید (و خط مشی به جریان پاسخ متصل شود). اما در این مورد، XML برای تبدیل در درخواست است.

شیوه نامه 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>&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>

شیوه نامه my_transform.xsl که در خط مشی به آن اشاره شده است. برای دیدن نمونه ای از پیام XML ورودی به نمونه بعدی بروید.

پیام ->

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

پیام نمونه در درخواست (که در عنصر <Source>request</Source> در اولین نمونه مشخص شده است).

پیام دگرگون شده

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

پیام تبدیل شده پس از شیوه نامه XSLT از این نمونه ها به پیام XML اعمال می شود.


مرجع عنصر

یک خط مشی XSL Transformation را با استفاده از عناصر زیر پیکربندی کنید.

نام فیلد توضیحات
نام ( اجباری ) نام سیاست. نویسه هایی که می توانید در نام استفاده کنید محدود به: A-Z0-9._\-$ % . با این حال، مدیریت رابط کاربری محدودیت‌های بیشتری را اعمال می‌کند، مانند حذف خودکار نویسه‌هایی که حروف عددی نیستند.
منبع ( اختیاری ) حاوی پیامی است که اطلاعات باید از آن استخراج شود. معمولاً این مقدار بسته به ورودی یا خروجی بودن پیامی که باید تبدیل شود، روی request یا response تنظیم می شود.
  • اگر منبع گم شده باشد، به عنوان یک پیام ساده تلقی می شود. به عنوان مثال، <Source>پیام</Source>
  • اگر متغیر منبع قابل حل نباشد یا به یک نوع غیر پیامی تبدیل شود، مرحله تبدیل با شکست مواجه می شود.
OutputVariable ( اختیاری )

متغیری که خروجی تبدیل را ذخیره می کند. OutputVariable نمی تواند از نوع Message باشد، یعنی نمی تواند 'پیام'، 'درخواست' یا 'پاسخ' باشد. شما باید این عنصر را به عنوان یک متغیر سفارشی تنظیم کنید و سپس آن متغیر را مصرف کنید.

برای جایگزینی محتوای پیام با خروجی تبدیل، این عنصر را حذف کنید. برای مثال، اگر پیامی را به HTML تبدیل می‌کنید، این عنصر را وارد نکنید.

ResourceURL ( اجباری ) فایل XSLT برای تبدیل پیام استفاده می شود.
پارامترها ( اختیاری ) ignoreUnresolvedVariables ( اختیاری )
هر گونه خطای متغیر حل نشده در دستورالعمل های اسکریپت XSLT را نادیده می گیرد.
مقادیر معتبر: true/false
مقدار پیش فرض: false
پارامتر ( اختیاری ) نام ( اجباری )

پارامترها از استفاده از پارامتر XSL در شیوه نامه شما پشتیبانی می کنند، جایی که نامی که در اینجا در خط مشی اضافه می کنید، نام پارامتر XSL است. برای مثال، اگر نام "uid" را وارد کنید، XSL شما ممکن است چیزی شبیه به این باشد: <xsl:param name ="uid" select="''"/> ).

پارامتر مقدار خود را یا از یک ارجاع به متغیر زمینه (که با ویژگی ref مشخص می شود) یا با یک value صریح دریافت می کند.

برای مثال و اطلاعات بیشتر، به http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864 مراجعه کنید.

مرجع (اختیاری)

مرجعی را مشخص می کند که مقدار را از یک متغیر دریافت می کند. به عنوان مثال، اگر یک پارامتر "uid" باید مقدار خود را از متغیری به نام "authn.uid" دریافت کند، عنصر Parameter به این شکل خواهد بود: <Parameter name="uid" ref="authn.uid"/>

اگر از این ویژگی استفاده می کنید، از ویژگی value استفاده نکنید.

مقدار (اختیاری)

می توانید از این ویژگی برای کدگذاری سخت مقدار پارامتر استفاده کنید.

اگر از این ویژگی استفاده می کنید، از ویژگی ref استفاده نکنید.


نکات استفاده

XSLT در یک فایل .xsl مستقل پیاده سازی می شود که در پروکسی API در زیر /resources/xsl ذخیره می شود. خط مشی XSL فقط به فایل XSL ارجاع می دهد. برای اطلاعات بیشتر به فایل های منابع مراجعه کنید.

خط مشی XSL به دو ورودی نیاز دارد:

  • نام یک شیوه نامه XSLT، که حاوی مجموعه ای از قوانین تبدیل است) که در پراکسی API تحت /resources/xsl ذخیره شده است.
  • منبع XML که باید تبدیل شود (معمولاً یک درخواست یا پیام پاسخ)

<xsl:include> و <xsl:import> پشتیبانی نمی‌شوند.

Apigee Edge به پردازنده Saxon XSLT متکی است و از XSLT 1.0 و 2.0 پشتیبانی می کند.


مرجع خطا

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xsl.XSLSourceMessageNotAvailable 500 This error occurs if the message or string variable specified in the <Source> element of the XSL Transform policy is either out of scope (not available in the specific flow where the policy is being executed) or can't be resolved (is not defined).
steps.xsl.XSLEvaluationFailed 500 This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
XSLEmptyResourceUrl If the <ResourceURL> element in the XSL Transform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSL Transform policy is not of type xsl, then the deployment of the API proxy fails.

موضوعات مرتبط