Правила XSLTransform

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

Что

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

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, то есть не может иметь значение message, request или response. Вам нужно настроить этот элемент как пользовательскую переменную, а затем использовать ее.

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

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

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

Значение параметра берется из ссылки на контекстную переменную (определяется атрибутом ref) или из явного значения value.

Пример и дополнительную информацию можно найти в записи на вкладке "Сообщество".

ref (необязательно)

Указывает ссылку, которая получает значение из переменной. Например, если параметр 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.


Справочник по ошибкам

Ошибки времени выполнения

Эти ошибки могут возникать при выполнении правил.

Код ошибки Статус HTTP Причина Исправить
steps.xsl.XSLSourceMessageNotAvailable 500 Эта ошибка возникает, если переменная сообщения или строки, указанная в элементе <Source> правила преобразования XSL, находится вне области действия (недоступна в определенном потоке, в котором выполняется правило) или не может быть разрешена (не определена).
steps.xsl.XSLEvaluationFailed 500 Эта ошибка возникает, если входные данные XML недоступны или имеют неверный формат, а также если правило XSLTransform не работает или не может преобразовать входной XML-файл на основе правил преобразования, указанных в XSL-файле. Причины сбоя правила XSLTransform могут быть разными. Причина ошибки в сообщении поможет вам понять, что произошло.

Ошибки развертывания

Эти ошибки могут возникать при развертывании прокси-сервера, содержащего это правило.

Название ошибки Причина Исправить
XSLEmptyResourceUrl Если элемент <ResourceURL> в правиле преобразования XSL пуст, развертывание прокси-сервера API завершится неудачно.
XSLInvalidResourceType Если тип ресурса, указанный в элементе <ResourceURL> правила XSL Transform, не является типом xsl, развертывание прокси-сервера API завершится неудачно.

Статьи по теме