Apigee Edge 문서를 보고 있습니다.
Apigee X 문서로 이동하세요. info
대상
XSL Transform 정책은 커스텀 확장 가능한 스타일시트 언어 변환(XSLT)을 XML 메시지에 적용하여 XML에서 XML, HTML, 또는 일반 텍스트와 같은 다른 형식으로 변환할 수 있도록 합니다. 이 정책은 XML을 지원하지만 동일한 데이터에 대해 다른 XML 형식이 필요한 애플리케이션을 통합하는 데 주로 사용됩니다.
샘플
다음 샘플은 XSL 변환 흐름의 모든 리소스를 보여줍니다.
XSL 정책 ->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
간단한 XSL 정책입니다. 다음 예시로 이동하여 정책(my_transform.xsl)에서 참조된 XSLT 스타일시트를 확인합니다. <Source> 요소가 중요합니다.
예를 들어 변환하려는 XML이 응답에 있는 경우 소스를 response로 설정하고 정책이 응답 흐름에 연결되지 않는 한 변환이 발생하지 않습니다. 하지만 이 경우에는 변환할 XML이 요청에 포함됩니다.
XSLT 스타일시트 ->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ver>sio<n="1.0" xsl:o>utp<ut method="text"/> <xsl:vari>abl<e name=&q>uot<;newline">; < xsl:text /xsl:text > /<xsl:vari>&able &xsl<:template> matc<h="/" xsl:textlt;Li>fegt;</xsl:tex>t xsl:value-of select="$newline"</ xsl>:text<Here are the odd-numbered items> from< the list:/xsl:text xsl:value-o>f selec<t="$newline"/ xsl:for->each sele<ct="list/listitem&q>uot; < xsl:if test="(pos>ition() m<od 2) = 1" xsl:num>ber for<mat=&qu>ot;1.< "/ > < xsl:val>&ue-of se&lec<t=".>&<quot;/ > < xsl:value-of s>elect="$newline"/ /xsl:if /xsl:for-each xsl:textlt;/Lifegt;/xsl:text /xsl:template /xsl:stylesheet
정책에서 참조되는 my_transform.xsl 스타일시트입니다. 수신 XML 메시지의 예시를 보려면 다음 샘플로 이동하세요.
메시지 ->
<?xml version=">1<.0&q>uot<;? li>st titleA few of my favor<ite al>bum<s/title > listitemA Lo<ve Suprem>e/l<istitem > listitem<Beat Craz>y/l<istitem > listitemHere Come the< Warm Jet>s/l<istitem > listitemKi<nd of Blu>e/l<istitem > listitemLond<on Callin>g/l<istitem > listitemRemai<n in Ligh>t/l<istitem > listitemThe J<oshua Tre>e/l<istitem > listitemThe Indestructible Beat< of Sowet>o</list>item /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 Transformation 정책을 구성합니다.
| 필드 이름 | 설명 | |||
|---|---|---|---|---|
| 이름(필수) |
정책의 이름입니다. 이름에 사용할 수 있는 문자는 A-Z0-9._\-$ %로 제한됩니다. 그러나 관리 UI는 영숫자가 아닌 문자를 자동으로 삭제하는 등 추가 제한사항을 적용합니다.
|
|||
| 소스(선택사항) |
정보를 추출해야 하는 메시지를 포함합니다. 이 값은 변환할 메시지가 인바운드 또는 아웃바운드인지에 따라 request 또는 response로 설정됩니다.
|
|||
| OutputVariable(선택사항) |
변환의 출력을 저장하는 변수입니다. OutputVariable은 메시지 유형, 즉 'message', 'request' 또는 'response'가 될 수 없습니다. 이 요소를 커스텀 변수로 설정한 다음 해당 변수를 사용합니다. 메시지 콘텐츠를 변환 출력으로 바꾸려면 이 요소를 삭제합니다. 예를 들어 메시지를 HTML로 변환하는 경우 이 요소를 포함하지 마세요. |
|||
| ResourceURL(필수) | 메시지 변환에 사용할 XSLT 파일입니다. | |||
| 매개변수(선택사항) | ignoreUnresolvedVariables(선택사항) |
XSLT 스크립트 안내에서 확인되지 않은 변수 오류는 무시합니다.
유효한 값: true/false
기본값: false
|
||
| 매개변수(선택사항) | name(필수) |
매개변수는 스타일시트에서 XSL 매개변수 사용을 지원합니다. 여기서 정책에 추가하는 이름은 XSL 매개변수의 이름입니다. 예를 들어 'uid'라는 이름을 입력하면 XSL은 다음과 같이 표시됩니다. 매개변수는 컨텍스트 변수( 예시 및 자세한 내용은 커뮤니티 게시물을 참고하세요. |
||
| ref(선택사항) |
변수의 값을 가져오는 참조를 지정합니다. 예를 들어 'uid' 매개변수가 'authn.uid'라는 변수에서 값을 가져와야 하는 경우 매개변수 요소는 다음과 같이 표시됩니다. 이 속성을 사용하는 경우 값 속성을 사용하지 마세요. |
|||
| value(선택사항) |
이 속성을 사용하여 매개변수 값을 하드 코딩할 수 있습니다. 이 속성을 사용하는 경우 ref 속성을 사용하지 마세요. |
|||
사용 참고사항
XSLT는 독립 실행형 .xsl 파일로 구현됩니다. 이 파일은 /resources/xsl의 API 프록시에 저장됩니다. XSL 정책은 XSL 파일을 단순히 참조만 합니다. 자세한 내용은 리소스 파일을 참조하세요.
XSL 정책에는 다음 두 가지 입력을 요구합니다.
/resources/xsl의 API 프록시에 저장된 XSLT 스타일시트의 이름(일련의 변환 규칙이 포함됨)- 변환할 XML 소스(일반적으로 요청 또는 응답 메시지)
<xsl:include> 및 <xsl:import>는 지원되지 않습니다.
Apigee Edge는 Saxon XSLT 프로세서를 사용하며 XSLT 1.0 및 2.0을 지원합니다.
오류 참조
런타임 오류
이러한 오류는 정책이 실행될 때 발생할 수 있습니다.
| 오류 코드 | HTTP 상태 | 원인 | 수정 |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
이 오류는 XSL 변환 정책의 <Source> 요소에 지정된 메시지 또는 문자열 변수가 범위를 벗어나거나 (정책이 실행되는 특정 흐름에서 사용할 수 없음) 해결할 수 없는 경우 (정의되지 않음)에 발생합니다.
|
build |
steps.xsl.XSLEvaluationFailed |
500 | 이 오류는 입력 XML 페이로드를 사용할 수 없거나 형식이 잘못되었거나, XSLTransform 정책이 실패하거나 XSL 파일에 제공된 변환 규칙에 따라 입력 XML 파일을 변환할 수 없는 경우에 발생합니다. XSLTransform 정책이 실패하는 원인은 여러 가지가 있습니다. 오류 메시지의 결함 이유를 통해 원인에 대한 자세한 정보를 얻을 수 있습니다. | build |
배포 오류
이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.
| 오류 이름 | 원인 | 수정 |
|---|---|---|
XSLEmptyResourceUrl |
XSL 변환 정책의 <ResourceURL> 요소가 비어 있으면 API 프록시 배포가 실패합니다. |
build |
XSLInvalidResourceType |
XSL 변환 정책의 <ResourceURL> 요소에 지정된 리소스 유형이 xsl 유형이 아니면 API 프록시 배포가 실패합니다. |
build |