Политика XSLTransform

Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X.
info

Что

Политика XSL-преобразования применяет пользовательские преобразования языка расширяемых таблиц стилей (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>&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-сообщения.

Сообщение ->

<?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>сообщение</Source>
  • Если исходная переменная не может быть разрешена или разрешается в тип, не являющийся сообщением, этап преобразования завершается неудачей.
Выходная переменная ( необязательно )

Переменная, хранящая выходные данные преобразования. OutputVariable не может иметь тип Message, то есть не может быть «message», «request» или «response». Этот элемент следует сделать пользовательской переменной, а затем использовать её.

Чтобы заменить содержимое сообщения результатом преобразования, удалите этот элемент. Например, если вы преобразуете сообщение в HTML, не включайте этот элемент.

ResourceURL ( обязательно ) Файл XSLT, который будет использоваться для преобразования сообщения.
Параметры ( необязательно ) ignoreUnresolvedVariables ( необязательно )
Игнорирует любые неразрешенные ошибки переменных в инструкциях скрипта XSLT.
Допустимые значения: true/false
Значение по умолчанию: false
Параметр ( необязательно ) имя ( обязательно )

Параметры поддерживают использование XSL-параметров в таблицах стилей, где имя, добавляемое здесь в политику, является именем XSL-параметра. Например, если ввести имя «uid», ваш XSL может выглядеть примерно так: <xsl:param name ="uid" select="''"/> ).

Параметр получает свое значение либо из ссылки на контекстную переменную (идентифицируемую атрибутом ref ), либо с помощью явного value .

Пример и дополнительную информацию см. в сообщении сообщества .

ссылка (необязательно)

Указывает ссылку, которая получает значение из переменной. Например, если параметр "uid" должен получить значение из переменной "authn.uid", элемент "Parameter" будет выглядеть следующим образом: <Parameter name="uid" ref="authn.uid"/>

Если вы используете этот атрибут, не используйте атрибут 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.


Ссылка на ошибку

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xsl.XSLSourceMessageNotAvailable 500 This error occurs if the message or string variable specified in the <Source> element of the XSL Transform policy is either out of scope (not available in the specific flow where the policy is being executed) or can't be resolved (is not defined).
steps.xsl.XSLEvaluationFailed 500 This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
XSLEmptyResourceUrl If the <ResourceURL> element in the XSL Transform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSL Transform policy is not of type xsl, then the deployment of the API proxy fails.

Похожие темы

,

Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X.
info

Что

Политика XSL-преобразования применяет пользовательские преобразования языка расширяемых таблиц стилей (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>&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-сообщения.

Сообщение ->

<?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>сообщение</Source>
  • Если исходная переменная не может быть разрешена или разрешается в тип, не являющийся сообщением, этап преобразования завершается неудачей.
Выходная переменная ( необязательно )

Переменная, хранящая выходные данные преобразования. OutputVariable не может иметь тип Message, то есть не может быть «message», «request» или «response». Этот элемент следует сделать пользовательской переменной, а затем использовать её.

Чтобы заменить содержимое сообщения результатом преобразования, удалите этот элемент. Например, если вы преобразуете сообщение в HTML, не включайте этот элемент.

ResourceURL ( обязательно ) Файл XSLT, который будет использоваться для преобразования сообщения.
Параметры ( необязательно ) ignoreUnresolvedVariables ( необязательно )
Игнорирует любые неразрешенные ошибки переменных в инструкциях скрипта XSLT.
Допустимые значения: true/false
Значение по умолчанию: false
Параметр ( необязательно ) имя ( обязательно )

Параметры поддерживают использование XSL-параметров в таблицах стилей, где имя, добавляемое здесь в политику, является именем XSL-параметра. Например, если ввести имя «uid», ваш XSL может выглядеть примерно так: <xsl:param name ="uid" select="''"/> ).

Параметр получает свое значение либо из ссылки на контекстную переменную (идентифицируемую атрибутом ref ), либо с помощью явного value .

Пример и дополнительную информацию см. в сообщении сообщества .

ссылка (необязательно)

Указывает ссылку, которая получает значение из переменной. Например, если параметр "uid" должен получить значение из переменной "authn.uid", элемент "Parameter" будет выглядеть следующим образом: <Parameter name="uid" ref="authn.uid"/>

Если вы используете этот атрибут, не используйте атрибут 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.


Ссылка на ошибку

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xsl.XSLSourceMessageNotAvailable 500 This error occurs if the message or string variable specified in the <Source> element of the XSL Transform policy is either out of scope (not available in the specific flow where the policy is being executed) or can't be resolved (is not defined).
steps.xsl.XSLEvaluationFailed 500 This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
XSLEmptyResourceUrl If the <ResourceURL> element in the XSL Transform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSL Transform policy is not of type xsl, then the deployment of the API proxy fails.

Похожие темы