شما در حال مشاهده اسناد 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><Life></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></Life></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 تنظیم می شود.
| |||
OutputVariable ( اختیاری ) | متغیری که خروجی تبدیل را ذخیره می کند. OutputVariable نمی تواند از نوع Message باشد، یعنی نمی تواند 'پیام'، 'درخواست' یا 'پاسخ' باشد. شما باید این عنصر را به عنوان یک متغیر سفارشی تنظیم کنید و سپس آن متغیر را مصرف کنید. برای جایگزینی محتوای پیام با خروجی تبدیل، این عنصر را حذف کنید. برای مثال، اگر پیامی را به HTML تبدیل میکنید، این عنصر را وارد نکنید. | |||
ResourceURL ( اجباری ) | فایل XSLT برای تبدیل پیام استفاده می شود. | |||
پارامترها ( اختیاری ) | ignoreUnresolvedVariables ( اختیاری ) | هر گونه خطای متغیر حل نشده در دستورالعمل های اسکریپت XSLT را نادیده می گیرد. مقادیر معتبر: true/false مقدار پیش فرض: false | ||
پارامتر ( اختیاری ) | نام ( اجباری ) | پارامترها از استفاده از پارامتر XSL در شیوه نامه شما پشتیبانی می کنند، جایی که نامی که در اینجا در خط مشی اضافه می کنید، نام پارامتر XSL است. برای مثال، اگر نام "uid" را وارد کنید، XSL شما ممکن است چیزی شبیه به این باشد: پارامتر مقدار خود را یا از یک ارجاع به متغیر زمینه (که با ویژگی برای مثال و اطلاعات بیشتر، به http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864 مراجعه کنید. | ||
مرجع (اختیاری) | مرجعی را مشخص می کند که مقدار را از یک متغیر دریافت می کند. به عنوان مثال، اگر یک پارامتر "uid" باید مقدار خود را از متغیری به نام "authn.uid" دریافت کند، عنصر Parameter به این شکل خواهد بود: اگر از این ویژگی استفاده می کنید، از ویژگی 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 پشتیبانی می کند.
مرجع خطا
خطاهای زمان اجرا
این خطاها ممکن است هنگام اجرای سیاست رخ دهند.
کد خطا | وضعیت HTTP | علت | ثابت |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable | 500 | این خطا در صورتی رخ می دهد که پیام یا متغیر رشته مشخص شده در عنصر <Source> خط مشی XSL Transform یا خارج از محدوده باشد (در جریان خاصی که خط مشی اجرا می شود موجود نیست) یا قابل حل نباشد (تعریف نشده باشد). ). | build |
steps.xsl.XSLEvaluationFailed | 500 | اگر بار ورودی XML در دسترس نباشد/بد شکل باشد یا خط مشی XSLTransform شکست بخورد/نتواند فایل XML ورودی را بر اساس قوانین تبدیل ارائه شده در فایل XSL تبدیل کند، این خطا رخ می دهد. ممکن است دلایل مختلفی برای شکست خط مشی XSLTransform وجود داشته باشد. دلیل عدم موفقیت در پیام خطا اطلاعات بیشتری در مورد علت ارائه می دهد. | build |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.
نام خطا | علت | ثابت |
---|---|---|
XSLEmptyResourceUrl | اگر عنصر <ResourceURL> در خطمشی XSL Transform خالی باشد، استقرار پراکسی API با شکست مواجه میشود. | build |
XSLInvalidResourceType | اگر نوع منبع مشخص شده در عنصر <ResourceURL> خط مشی XSL Transform از نوع xsl نباشد، استقرار پراکسی API با شکست مواجه می شود. | build |