Вы просматриваете документацию по 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><Life></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></Life></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 в зависимости от того, является ли преобразуемое письмо входящим или исходящим.
|
|||
| OutputVariable (необязательный) |
Переменная, в которой хранится результат преобразования. Переменная OutputVariable не может быть типа Message, то есть не может иметь значение message, request или response. Вам нужно настроить этот элемент как пользовательскую переменную, а затем использовать ее. Чтобы заменить содержимое письма результатом преобразования, удалите этот элемент. Например, если вы преобразуете письмо в HTML, не включайте этот элемент. |
|||
| ResourceURL (обязательный) | Файл XSLT, который будет использоваться для преобразования письма. | |||
| Параметры (необязательно) | ignoreUnresolvedVariables (необязательный) |
Игнорирует все неразрешенные ошибки переменных в инструкциях скрипта XSLT.
Допустимые значения: true/false
Значение по умолчанию: false.
|
||
| Параметр (необязательный) | name (обязательный) |
Параметры поддерживают использование XSL-параметров в таблицах стилей. Название, которое вы добавите в правила, будет названием XSL-параметра. Например, если вы введете название "uid", ваш XSL может выглядеть примерно так: Значение параметра берется из ссылки на контекстную переменную (определяется атрибутом Пример и дополнительную информацию можно найти в записи на вкладке "Сообщество". |
||
| ref (необязательно) |
Указывает ссылку, которая получает значение из переменной. Например, если параметр uid должен получать значение из переменной authn.uid, элемент Parameter будет выглядеть следующим образом: Если вы используете этот атрибут, не добавляйте атрибут "значение". |
|||
| 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, находится вне области действия (недоступна в определенном потоке, в котором выполняется правило) или не может быть разрешена (не определена).
|
build |
steps.xsl.XSLEvaluationFailed |
500 | Эта ошибка возникает, если входные данные XML недоступны или имеют неверный формат, а также если правило XSLTransform не работает или не может преобразовать входной XML-файл на основе правил преобразования, указанных в XSL-файле. Причины сбоя правила XSLTransform могут быть разными. Причина ошибки в сообщении поможет вам понять, что произошло. | build |
Ошибки развертывания
Эти ошибки могут возникать при развертывании прокси-сервера, содержащего это правило.
| Название ошибки | Причина | Исправить |
|---|---|---|
XSLEmptyResourceUrl |
Если элемент <ResourceURL> в правиле преобразования XSL пуст, развертывание прокси-сервера API завершится неудачно. |
build |
XSLInvalidResourceType |
Если тип ресурса, указанный в элементе <ResourceURL> правила XSL Transform, не является типом xsl, развертывание прокси-сервера API завершится неудачно. |
build |