XSLTransform-Richtlinie

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Was

Die XSLTransform-Richtlinie wendet benutzerdefinierte Extensible Stylesheet-Sprachtransformationen (XSLT) auf XML-Nachrichten an. Damit können sie von XML in ein anderes Format wie XML, HTML oder Nur-Text umgewandelt werden. Die Richtlinie wird häufig verwendet, um Anwendungen zu integrieren, die XML unterstützen, aber für dieselben Daten unterschiedliche XML-Formate erfordern.

Samples

Die folgenden Beispiele zeigen alle Ressourcen in einem XSL-Transformations-Flow.

XSL-Richtlinie ->

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

Einfache XSL-Richtlinie. Im nächsten Beispiel wird das in der Richtlinie referenzierte XP-Stylesheet angezeigt (my_transform.xsl). Das Element <Source> ist wichtig. Wenn sich die zu transformierende XML beispielsweise in der Antwort befindet, erfolgt die Transformation nur, wenn Sie die Quelle auf response setzen und die Richtlinie an den Antwort-Flow angehängt ist. In diesem Fall befindet sich die zu transformierende XML jedoch in der Anfrage.

XSLT-Stylesheet ->

<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>

Das Stylesheet my_transform.xsl, auf das in der Richtlinie verwiesen wird. Rufen Sie das nächste Beispiel auf, um ein Beispiel für eine eingehende XML-Nachricht zu sehen.

Nachricht ->

<?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>

Beispielnachricht in der Anfrage (in Beispiel 1 im Element <Source>request</Source> der Richtlinie angegeben).

Transformierte Nachricht

<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>

Die transformierte Nachricht nach dem XSLT-Stylesheet aus diesen Beispielen wird auf die XML-Nachricht angewendet.


Elementreferenz

Konfigurieren Sie eine XSL-Transformationsrichtlinie.

Feldname Beschreibung
Name (erforderlich) Name der Richtlinie. Folgende Zeichen sind im Namen zulässig: A-Z0-9._\-$ %. Die Verwaltungs-UI erzwingt jedoch zusätzliche Einschränkungen, z. B. werden nicht alphanumerische Zeichen automatisch entfernt.
Quelle (optional) Enthält die Nachricht, aus der Informationen extrahiert werden sollen. Normalerweise ist dieser Wert auf request oder response gesetzt, je nachdem, ob die transformierte Nachricht eingehender oder ausgehender Traffic ist.
  • Wenn die Quelle fehlt, wird sie als einfache Nachricht behandelt. Beispiel: <Source>Nachricht</Source>
  • Wenn die Quellvariable nicht aufgelöst werden kann oder in einen Nicht-Nachrichtentyp aufgelöst wird, schlägt der Transformationsschritt fehl.
OutputVariable (optional)

Eine Variable, die die Ausgabe der Transformation speichert. Die OutputVariable kann nicht vom Typ "Message" sein, d. h. nicht "message", "request" oder "response". Sie sollten dieses Element als benutzerdefinierte Variable festlegen und dann diese Variable nutzen.

Um den Nachrichteninhalt durch die Ausgabe der Transformation zu ersetzen, löschen Sie dieses Element. Wenn Sie beispielsweise eine Nachricht in HTML umwandeln, fügen Sie dieses Element nicht ein.

ResourceURL (erforderlich) Die DHCP-Datei, die für die Transformation der Nachricht verwendet werden soll.
Parameter (optional) ignoreUnresolvedVariables (optional)
Ungelöste Variablenfehler in den Anweisungen für das XSLT-Skript werden ignoriert.
Gültige Werte: true/false
Standardwert: false
Parameter (Optional) Name (erforderlich)

Parameter unterstützen die Verwendung von XSL-Parameter in Ihren Stylesheets, wobei der Name, den Sie hier in der Richtlinie hinzufügen, der Name des XSL-Parameters ist. Wenn Sie beispielsweise den Namen "uid" eingeben, könnte XSL in etwa so aussehen: <xsl:param name="uid" select="''"/>.

Der Parameter wird entweder aus einem Verweis auf eine Kontextvariable (durch das Attribut ref identifiziert) oder mit einem expliziten value abgerufen.

Ein Beispiel und weitere Informationen finden Sie unter http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (optional)

Gibt den Verweis an, der den Wert aus einer Variablen bezieht. Wenn ein "uid"-Parameter beispielsweise seinen Wert aus einer Variablen namens "authn.uid" abrufen muss, sieht das Parameter-Element so aus: <Parameter name="uid" ref="authn.uid"/>

Wenn Sie dieses Attribut verwenden, sollten Sie das Wertattribut nicht verwenden.

Wert (optional)

Sie können dieses Attribut verwenden, um den Wert des Parameters hartzucodieren.

Verwenden Sie dieses Attribut nicht mit dem Attribut "ref".


Verwendungshinweise

XSLT wird in einer eigenständigen .xsl-Datei implementiert, die im API-Proxy unter /resources/xsl gespeichert ist. Die XSL-Richtlinie verweist nur auf die XSL-Datei. Weitere Informationen finden Sie unter Ressourcendateien.

Für die XSL-Richtlinie sind zwei Eingaben erforderlich:

  • Der Name eines GQL-Stylesheets, das eine Reihe von Transformationsregeln enthält, die im API-Proxy unter /resources/xsl gespeichert sind
  • Die Quelle der zu transformierenden XML-Datei (normalerweise eine Anfrage- oder Antwortnachricht)

<xsl:include> und <xsl:import> werden nicht unterstützt.

Apigee Edge basiert auf dem Saxon XSLT-Prozessor und unterstützt XSLT 1.0 und 2.0.


Fehlerreferenz

Laufzeitfehler

Diese Fehler können bei Ausführung der Richtlinie auftreten.

Fehlercode HTTP-Status Ursache Problembehebung
steps.xsl.XSLSourceMessageNotAvailable 500 Dieser Fehler tritt auf, wenn die im <Source>-Element der XSL-Transformationsrichtlinie angegebene Nachricht oder Stringvariable entweder außerhalb des Geltungsbereichs liegt (in dem spezifischen Ablauf, in dem die Richtlinie ausgeführt wird, nicht verfügbar) oder nicht aufgelöst werden kann (nicht definiert).
steps.xsl.XSLEvaluationFailed 500 Dieser Fehler tritt auf, wenn die XML-Eingabenutzlast nicht verfügbar/fehlerhaft ist oder die XSLTransform-Richtlinie fehlschlägt/die XML-Eingabedatei nicht auf Basis der in der XSL-Datei bereitgestellten Transformationsregeln transformieren kann. Es sind viele verschiedene Gründe dafür denkbar, dass die XSLTransform-Richtlinie fehlschlägt. Der in der Fehlermeldung angegebene Fehlerursache enthält weitere Informationen zum Grund.

Bereitstellungsfehler

Diese Fehler können auftreten, wenn Sie einen Proxy bereitstellen, der diese Richtlinie enthält.

Fehlername Ursache Problembehebung
XSLEmptyResourceUrl Wenn das Element <ResourceURL> in der XSL-Transformationsrichtlinie leer ist, schlägt die Bereitstellung des API-Proxys fehl.
XSLInvalidResourceType Entspricht der im <ResourceURL>-Element der XSL-Transform-Richtlinie angegebene Ressourcentyp nicht dem Typ xsl, schlägt die Bereitstellung des API-Proxys fehl.

Weitere Informationen