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