Zasada XSLTransform

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Co

Zasada przekształcania XSL stosuje niestandardowe przekształcenia języka arkusza stylów (XSLT) do wiadomości XML, umożliwiając przekształcenie ich z formatu XML na inny format, taki jak XML, HTML lub zwykły tekst. Ta zasada jest często używana do integrowania aplikacji obsługujących XML, ale w przypadku tych samych danych wymagają one różnych formatów XML.

Sample

Poniższe przykłady pokazują wszystkie zasoby w procesie przekształcania XSL.

Zasady XSL ->

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

Prosta zasada XSL. Przejdź do następnego przykładu, aby zobaczyć arkusz stylów, do którego odwołuje się zasada (my_transform.xsl). Ważny jest element <Source>. Jeśli na przykład plik XML, który chcesz przekształcić, znajduje się w odpowiedzi, przekształcenie nie zostanie wykonane, chyba że ustawisz wartość response (a zasada zostanie dołączona do przepływu odpowiedzi). W tym przypadku kod XML do przekształcenia znajduje się w żądaniu.

Arkusz stylów CSS ->

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

Arkusz stylów my_transform.xsl, do którego odwołuje się zasada. Przejdź do następnego przykładu, aby zobaczyć przykład przychodzącej wiadomości XML.

Wiadomość ->

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

Przykładowy komunikat w żądaniu (wskazany w elemencie <Source>request</Source> zasady w pierwszym przykładzie).

Przekształcona wiadomość

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

Przekształcony komunikat po zastosowaniu arkusza stylów CSS z tych przykładów do komunikatu XML.


Odwołanie do elementu

Skonfiguruj zasadę transformacji XSL za pomocą poniższych elementów.

Nazwa pola Opis
Imię i nazwisko (wymagane) Nazwa zasady. Znaki, których możesz używać w nazwie, są ograniczone do: A-Z0-9._\-$ %. Interfejs zarządzania wymusza jednak dodatkowe ograniczenia, takie jak automatyczne usuwanie znaków niealfanumerycznych.
Źródło (opcjonalnie) Zawiera wiadomość, z której należy wyodrębnić informacje. Zwykle ta wartość jest ustawiona na request lub response w zależności od tego, czy wiadomość do przekształcenia jest przychodząca czy wychodząca.
  • W przypadku braku źródła wiadomość jest traktowana jako prosta wiadomość. Na przykład <Source>wiadomość</Source>.
  • Jeśli nie można znaleźć zmiennej źródłowej lub przyjmuje ona typ inny niż komunikat, krok przekształcenia kończy się niepowodzeniem.
Zmienna wyjściowa (opcjonalnie)

Zmienna, która przechowuje dane wyjściowe przekształcenia. Zmienna wyjściowa nie może mieć typu komunikatu, czyli nie może być to „message”, „request” ani „response”. Ustaw ten element jako zmienną niestandardową i użyj tej zmiennej.

Aby zastąpić treść wiadomości danymi wyjściowymi przekształcenia, usuń ten element. Jeśli na przykład przekształcasz wiadomość na kod HTML, nie uwzględniaj tego elementu.

ResourceURL (wymagany) Plik SDF, który ma być używany do przekształcenia wiadomości.
Parametry (opcjonalne) ignorowanych zmiennych nierozstrzygniętych (opcjonalnie)
Ignoruje wszystkie nieusunięte błędy zmiennych w instrukcjach skryptu Spannera.
Prawidłowe wartości: true/false
Wartość domyślna: false
Parametr (opcjonalny) imię i nazwisko (wymagane)

Parametry obsługują w arkuszach stylów korzystanie z parametru XSL. Nazwa podana w zasadzie to nazwa parametru XSL. Jeśli na przykład wpiszesz nazwę „uid”, Twój kod XSL może wyglądać mniej więcej tak: <xsl:param name="uid" select="''"/>.

Wartość parametru jest uzyskiwana z odniesienia do zmiennej kontekstowej (określonej przez atrybut ref) lub z jawną właściwością value.

Przykład i więcej informacji znajdziesz na stronie http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (opcjonalnie)

Określa odwołanie, które pobiera wartość ze zmiennej. Jeśli na przykład parametr „uid” musi uzyskać swoją wartość ze zmiennej o nazwie „authn.uid”, element Parametr będzie wyglądał tak: <Parameter name="uid" ref="authn.uid"/>

Jeśli używasz tego atrybutu, nie używaj atrybutu wartość.

wartość (opcjonalnie)

Możesz użyć tego atrybutu do zakodowania na stałe wartości parametru.

Jeśli używasz tego atrybutu, nie używaj atrybutu ref.


Zastosowanie

Plik SDF jest zaimplementowany w samodzielnym pliku .xsl, który jest przechowywany na serwerze proxy interfejsu API pod adresem /resources/xsl. Zasada XSL odwołuje się tylko do pliku XSL. Więcej informacji znajdziesz w artykule Pliki zasobów.

Zasada XSL wymaga 2 danych wejściowych:

  • Nazwa arkusza stylów YAML, który zawiera zestaw reguł przekształcania) przechowywanych na serwerze proxy interfejsu API w sekcji /resources/xsl
  • Źródło pliku XML do przekształcenia (zwykle jest to wiadomość żądania lub odpowiedzi).

Wartości <xsl:include> i <xsl:import> nie są obsługiwane.

Apigee Edge korzysta z procesora Spannera Saxon i obsługuje język Spannera w wersji 1.0 i 2.0.


Informacje o błędach

Błędy w czasie wykonywania

Te błędy mogą wystąpić podczas wykonywania zasady.

Kod błędu Stan HTTP Przyczyna Napraw
steps.xsl.XSLSourceMessageNotAvailable 500 Ten błąd występuje, jeśli zmienna komunikatu lub ciągu znaków określona w elemencie <Source> zasady przekształcania XSL jest poza zakresem (niedostępna w konkretnym procesie, w którym jest wykonywana) albo nie można jej rozwiązać (nie jest zdefiniowana).
steps.xsl.XSLEvaluationFailed 500 Ten błąd występuje, jeśli wejściowe ładunki XML są niedostępne lub nieprawidłowo sformułowane albo zasada XSLTransform nie lub nie może przekształcić wejściowego pliku XML na podstawie reguł przekształcania podanych w pliku XSL. Przyczyn niepowodzenia zasady XSLTransform może być wiele. Więcej informacji na temat przyczyny niepowodzenia będzie można znaleźć w komunikacie o błędzie.

Błędy wdrażania

Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.

Nazwa błędu Przyczyna Napraw
XSLEmptyResourceUrl Jeśli element <ResourceURL> w zasadzie przekształcania XSL jest pusty, wdrożenie serwera proxy interfejsu API nie powiedzie się.
XSLInvalidResourceType Jeśli typ zasobu określony w elemencie <ResourceURL> zasady przekształcania XSL nie jest typu xsl, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Powiązane artykuły