XSLTransform की नीति

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

यह क्या है

XSL बदलाव की नीति, एक्सएमएल मैसेज पर पसंद के मुताबिक एक्सटेंसिबल स्टाइलशीट लैंग्वेज ट्रांसफ़ॉर्मेशन (XSLT) लागू करती है. इससे, उन्हें एक्सएमएल से एक्सएमएल, एचटीएमएल या सामान्य टेक्स्ट जैसे दूसरे फ़ॉर्मैट में बदला जा सकता है. इस नीति का इस्तेमाल अक्सर एक्सएमएल के साथ काम करने वाले ऐप्लिकेशन को इंटिग्रेट करने के लिए किया जाता है. हालांकि, एक ही डेटा के लिए अलग-अलग एक्सएमएल फ़ॉर्मैट की ज़रूरत होती है.

सैंपल

नीचे दिए गए सैंपल, XSL ट्रांसफ़ॉर्मेशन फ़्लो में सभी संसाधनों को दिखाते हैं.

XSL नीति ->

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

आसान XSL नीति. अगले उदाहरण पर जाएं और उस XSLT स्टाइलशीट को देखें जिसके बारे में नीति (my_transform.xsl) में बताया गया है. <Source> एलिमेंट ज़रूरी है. उदाहरण के लिए, अगर आपको जिस एक्सएमएल को बदलना है वह रिस्पॉन्स में है, तो बदलाव तब तक नहीं होगा, जब तक सोर्स को response पर सेट नहीं किया जाता (और नीति, रिस्पॉन्स फ़्लो से जुड़ी होती है). हालांकि, इस मामले में बदला जाने वाला एक्सएमएल, अनुरोध में होता है.

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 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 स्टाइलशीट के बाद, बदले गए मैसेज को एक्सएमएल मैसेज पर लागू किया जाता है.


एलिमेंट का रेफ़रंस

नीचे दिए गए एलिमेंट का इस्तेमाल करके, XSL बदलाव की नीति कॉन्फ़िगर करें.

फ़ील्ड का नाम ब्यौरा
नाम (ज़रूरी है) नीति का नाम. नाम में इस्तेमाल किए जा सकने वाले वर्ण, इन पर पाबंदी है: A-Z0-9._\-$ %. हालांकि, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) अतिरिक्त पाबंदियां लागू करता है, जैसे कि उन वर्णों को अपने-आप हटाना जो अक्षर और अंक नहीं हैं.
सोर्स (ज़रूरी नहीं) इसमें वह मैसेज होता है जिससे जानकारी निकालने की ज़रूरत होती है. आम तौर पर, यह वैल्यू request या response पर सेट होती है. यह इस बात पर निर्भर करता है कि जिस मैसेज को बदलना है वह इनबाउंड है या आउटबाउंड.
  • अगर सोर्स मौजूद नहीं है, तो इसे एक सामान्य मैसेज माना जाएगा. उदाहरण के लिए, <Source>message</Source>
  • अगर सोर्स वैरिएबल को हल नहीं किया जा सकता या यह बिना मैसेज वाले टाइप में बदल जाता है, तो बदलाव पूरा नहीं होता.
आउटपुट वैरिएबल (ज़रूरी नहीं)

ऐसा वैरिएबल जो ट्रांसफ़ॉर्मेशन के आउटपुट को सेव करता है. आउटपुट वैरिएबल, मैसेज टाइप का नहीं हो सकता. इसका मतलब है कि यह 'मैसेज', 'अनुरोध' या 'रिस्पॉन्स' नहीं हो सकता. आपको इस एलिमेंट को कस्टम वैरिएबल के तौर पर सेट करना चाहिए. इसके बाद, इसका इस्तेमाल करना चाहिए.

मैसेज के कॉन्टेंट को ट्रांसफ़ॉर्मेशन के आउटपुट से बदलने के लिए, इस एलिमेंट को मिटाएं. उदाहरण के लिए, अगर किसी मैसेज को एचटीएमएल में बदला जा रहा है, तो इस एलिमेंट को शामिल न करें.

ResourceURL (ज़रूरी है) मैसेज को बदलने के लिए इस्तेमाल की जाने वाली XSLT फ़ाइल.
पैरामीटर (ज़रूरी नहीं) TargetingUnresolvedVariables (ज़रूरी नहीं) को अनदेखा करें
XSLT स्क्रिप्ट के निर्देशों में, हल न होने वाली वैरिएबल गड़बड़ियों को अनदेखा करता है.
मान्य वैल्यू: सही/गलत
डिफ़ॉल्ट वैल्यू: गलत
पैरामीटर (ज़रूरी नहीं) नाम (ज़रूरी है)

पैरामीटर आपकी स्टाइलशीट में 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 name="uid" ref="authn.uid"/>

इस एट्रिब्यूट का इस्तेमाल करने पर, वैल्यू एट्रिब्यूट का इस्तेमाल न करें.

वैल्यू (ज़रूरी नहीं)

इस एट्रिब्यूट का इस्तेमाल करके, पैरामीटर की वैल्यू को हार्ड कोड किया जा सकता है.

इस एट्रिब्यूट का इस्तेमाल करने पर, रेफ़रंस एट्रिब्यूट का इस्तेमाल न करें.


इस्तेमाल की जानकारी

XSLT को स्टैंड-अलोन .xsl फ़ाइल में लागू किया जाता है, जिसे /resources/xsl में एपीआई प्रॉक्सी में सेव किया जाता है. XSL नीति में, XSL फ़ाइल का सिर्फ़ रेफ़रंस दिया जाता है. ज़्यादा जानकारी के लिए, संसाधन फ़ाइलें देखें.

XSL नीति के लिए दो इनपुट ज़रूरी हैं:

  • उस XSLT स्टाइलशीट का नाम जिसमें, ट्रांसफ़ॉर्मेशन के नियमों का सेट होता है. इसे /resources/xsl में एपीआई प्रॉक्सी में सेव किया जाता है
  • जिस एक्सएमएल में बदलाव किया जाना है उसका सोर्स (आम तौर पर, अनुरोध या जवाब वाला मैसेज)

<xsl:include> और <xsl:import> का इस्तेमाल नहीं किया जा सकता.

Apigee Edge, Saxon XSLT प्रोसेसर पर निर्भर होता है. साथ ही, XSLT 1.0 और 2.0 वर्शन के साथ काम करता है.


गड़बड़ी का रेफ़रंस

रनटाइम से जुड़ी गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी कोड एचटीटीपी कोड स्थिति वजह समाधान
steps.xsl.XSLSourceMessageNotAvailable 500 यह गड़बड़ी तब होती है, जब XSL ट्रांसफ़ॉर्म की नीति के <Source> एलिमेंट में बताया गया मैसेज या स्ट्रिंग वैरिएबल, दायरे से बाहर होता है (उस खास फ़्लो में उपलब्ध नहीं होता जहां नीति को लागू किया जा रहा हो) या जिसका समाधान नहीं किया जा सकता.
steps.xsl.XSLEvaluationFailed 500 यह गड़बड़ी तब होती है, जब इनपुट एक्सएमएल पेलोड उपलब्ध नहीं होता या खराब होता है या XSL फ़ाइल में दिए गए बदलाव के नियमों के आधार पर, एक्सएसएल ट्रांसफ़ॉर्म की नीति, काम नहीं करती या इनपुट एक्सएमएल फ़ाइल को बदल नहीं पाती. XSLTransform की नीति के नाकाम होने की कई अलग-अलग वजहें हो सकती हैं. गड़बड़ी के मैसेज में, गड़बड़ी की वजह होने की वजह के बारे में ज़्यादा जानकारी दी जाएगी.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाला प्रॉक्सी डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह समाधान
XSLEmptyResourceUrl अगर XSL Transform की नीति में <ResourceURL> एलिमेंट खाली है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.
XSLInvalidResourceType अगर XSL ट्रांसफ़ॉर्म नीति के <ResourceURL> एलिमेंट में बताया गया रिसॉर्स टाइप xsl टाइप का नहीं है, तो एपीआई प्रॉक्सी का डिप्लॉयमेंट काम नहीं करता.

मिलते-जुलते विषय