XSLTransform की नीति

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

क्या

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

सैंपल

यहां दिए गए उदाहरणों में, XSL ट्रांसफ़ॉर्मेशन फ़्लो में मौजूद सभी संसाधनों को दिखाया गया है.

XSL नीति ->

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

सामान्य XSL नीति. नीति (my_transform.xsl) में रेफ़र की गई XSLT स्टाइलशीट देखने के लिए, अगले उदाहरण पर जाएं. <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 स्टाइलशीट का रेफ़रंस दिया गया है. आने वाले एक्सएमएल मैसेज का उदाहरण देखने के लिए, अगले सैंपल पर जाएं.

Message ->

<?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>
  • अगर सोर्स वैरिएबल को हल नहीं किया जा सकता या वह मैसेज टाइप का नहीं है, तो बदलाव करने वाला चरण पूरा नहीं होगा.
OutputVariable (ज़रूरी नहीं)

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

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

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

पैरामीटर, आपकी स्टाइलशीट में XSL पैरामीटर के इस्तेमाल का समर्थन करते हैं. यहां नीति में जोड़ा गया नाम, XSL पैरामीटर का नाम होता है. उदाहरण के लिए, अगर आपने "uid" नाम डाला है, तो आपका XSL इस तरह दिख सकता है: <xsl:param name="uid" select="''"/>).

पैरामीटर को वैल्यू, कॉन्टेक्स्ट वैरिएबल के रेफ़रंस से मिलती है. इसे ref एट्रिब्यूट से पहचाना जाता है. इसके अलावा, इसे value से भी पहचाना जा सकता है.

उदाहरण और ज़्यादा जानकारी के लिए, कम्यूनिटी पोस्ट देखें.

ref (ज़रूरी नहीं)

यह उस रेफ़रंस के बारे में बताता है जो किसी वैरिएबल से वैल्यू लेता है. उदाहरण के लिए, अगर "uid" पैरामीटर को "authn.uid" नाम के वैरिएबल से वैल्यू लेनी है, तो पैरामीटर एलिमेंट ऐसा दिखेगा: <Parameter name="uid" ref="authn.uid"/>

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

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

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

अगर इस एट्रिब्यूट का इस्तेमाल किया जाता है, तो ref एट्रिब्यूट का इस्तेमाल न करें.


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

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 यह गड़बड़ी तब होती है, जब इनपुट एक्सएमएल पेलोड उपलब्ध न हो या गलत तरीके से फ़ॉर्मैट किया गया हो या XSLTransform की नीति, इनपुट एक्सएमएल फ़ाइल में बदलाव न कर पाए या XSL फ़ाइल में दिए गए बदलाव के नियमों के आधार पर, इनपुट एक्सएमएल फ़ाइल को नहीं बदल पा रही हो. XSLTransform की नीति के काम न करने की कई वजहें हो सकती हैं. गड़बड़ी के मैसेज में असफल होने की वजह के बारे में ज़्यादा जानकारी दी जाएगी.

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

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

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

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