XSLT 처리 중 외부 리소스 확인

업데이트: November 2007

다음과 같이 XSLT 변환 중에 외부 리소스를 확인해야 하는 몇 가지 경우가 있습니다.

XmlResolver 클래스 사용

XmlResolver 클래스를 사용하여 외부 리소스를 확인할 수 있습니다. 다음 표에서는 XSLT 처리 중 XmlResolver가 관련되는 경우를 설명합니다.

XSLT 작업

XmlResolver를 사용하여 수행하는 작업

스타일시트를 컴파일합니다.

스타일시트의 URI를 확인합니다.

-및-

xsl:import 또는 xsl:include 요소에서 URI 참조를 확인합니다.

스타일시트를 실행합니다.

컨텍스트 문서의 URI를 확인합니다.

-및-

XSLT document() 함수에서 URI 참조를 확인합니다.

LoadTransform 메서드는 XmlResolver 개체를 해당 인수의 하나로 사용하는 오버로드를 포함합니다. XmlResolver가 지정되지 않을 경우 기본 XmlUrlResolver가 자격 증명 없이 사용됩니다.

다음 목록에서는 XmlResolver 개체를 지정하려 할 수 있는 경우에 대해 설명합니다.

  • XSLT 처리에 인증을 요구하는 네트워크 리소스에 대한 액세스 권한이 필요할 경우 XmlResolver를 필요한 자격 증명과 함께 사용할 수 있습니다.

  • XSLT 처리가 액세스할 수 있는 리소스를 제한하려면 XmlSecureResolver를 올바른 권한 집합으로 사용할 수 있습니다. 사용자가 제어하지 않거나 신뢰할 수 없는 리소스를 열어야 하는 경우에는 XmlSecureResolver 클래스를 사용합니다.

  • 동작을 사용자 지정하기 위해 사용자의 고유한 XmlResolver 클래스를 구현하고 사용하여 리소스를 확인할 수 있습니다.

  • 외부 리소스에 액세스하지 않도록 하려면 XmlResolver 인수에 대해 null을 지정할 수 있습니다.

예제

다음 예제에서는 네트워크 리소스에 저장된 스타일시트를 컴파일합니다. XmlUrlResolver 개체는 스타일시트에 액세스하는 데 필요한 자격 증명을 지정합니다.

' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("https://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred); 
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("https://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);   

참고 항목

개념

System.Xml 보안 고려 사항

참조

XslCompiledTransform

XsltSettings

기타 리소스

XSLT 변환