خط مشی 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 پشتیبانی می‌کند.


مرجع خطا

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت ثابت
steps.xsl.XSLSourceMessageNotAvailable 500 این خطا در صورتی رخ می دهد که پیام یا متغیر رشته مشخص شده در عنصر <Source> خط مشی XSL Transform یا خارج از محدوده باشد (در جریان خاصی که خط مشی اجرا می شود موجود نیست) یا قابل حل نباشد (تعریف نشده باشد). ).
steps.xsl.XSLEvaluationFailed 500 اگر بار ورودی XML در دسترس نباشد/بد شکل باشد یا خط مشی XSLTransform شکست بخورد/نتواند فایل XML ورودی را بر اساس قوانین تبدیل ارائه شده در فایل XSL تبدیل کند، این خطا رخ می دهد. ممکن است دلایل مختلفی برای شکست خط مشی XSLTransform وجود داشته باشد. دلیل عدم موفقیت در پیام خطا اطلاعات بیشتری در مورد علت ارائه می دهد.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت ثابت
XSLEmptyResourceUrl اگر عنصر <ResourceURL> در خط‌مشی XSL Transform خالی باشد، استقرار پراکسی API با شکست مواجه می‌شود.
XSLInvalidResourceType اگر نوع منبع مشخص شده در عنصر <ResourceURL> خط مشی XSL Transform از نوع xsl نباشد، استقرار پراکسی API با شکست مواجه می شود.

مباحث مرتبط

،

شما در حال مشاهده مستندات 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 پشتیبانی می‌کند.


مرجع خطا

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت ثابت
steps.xsl.XSLSourceMessageNotAvailable 500 این خطا در صورتی رخ می دهد که پیام یا متغیر رشته مشخص شده در عنصر <Source> خط مشی XSL Transform یا خارج از محدوده باشد (در جریان خاصی که خط مشی اجرا می شود موجود نیست) یا قابل حل نباشد (تعریف نشده باشد). ).
steps.xsl.XSLEvaluationFailed 500 اگر بار ورودی XML در دسترس نباشد/بد شکل باشد یا خط مشی XSLTransform شکست بخورد/نتواند فایل XML ورودی را بر اساس قوانین تبدیل ارائه شده در فایل XSL تبدیل کند، این خطا رخ می دهد. ممکن است دلایل مختلفی برای شکست خط مشی XSLTransform وجود داشته باشد. دلیل عدم موفقیت در پیام خطا اطلاعات بیشتری در مورد علت ارائه می دهد.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت ثابت
XSLEmptyResourceUrl اگر عنصر <ResourceURL> در خط‌مشی XSL Transform خالی باشد، استقرار پراکسی API با شکست مواجه می‌شود.
XSLInvalidResourceType اگر نوع منبع مشخص شده در عنصر <ResourceURL> خط مشی XSL Transform از نوع xsl نباشد، استقرار پراکسی API با شکست مواجه می شود.

مباحث مرتبط