خط مشی XSLTransform

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

چه

سیاست تبدیل XSL، تبدیل‌های سفارشی زبان شیوه‌نامه توسعه‌پذیر (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 مورد نظر برای تبدیل در پاسخ باشد، تبدیل انجام نمی‌شود مگر اینکه Source را روی 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 پیکربندی کنید.

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

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

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

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

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

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

برای مثال و اطلاعات بیشتر، به پست انجمن مراجعه کنید.

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

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

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

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

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

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


یادداشت‌های استفاده

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

سیاست 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.

مباحث مرتبط

،

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

چه

سیاست تبدیل XSL، تبدیل‌های سفارشی زبان شیوه‌نامه توسعه‌پذیر (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 مورد نظر برای تبدیل در پاسخ باشد، تبدیل انجام نمی‌شود مگر اینکه Source را روی 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 پیکربندی کنید.

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

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

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

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

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

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

برای مثال و اطلاعات بیشتر، به پست انجمن مراجعه کنید.

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

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

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

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

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

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


یادداشت‌های استفاده

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

سیاست 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.

مباحث مرتبط