XSLT 변환 중 외부 리소스를 처리해야 할 경우가 여러 번 있을 수 있습니다.
XmlResolver 클래스 사용
클래스 XmlResolver 는 외부 리소스를 확인하는 데 사용됩니다. 다음 표는 XSLT 처리 중에 XmlResolver가 관련되는 시기를 설명합니다.
XSLT 작업 | XmlResolver의 용도 |
---|---|
스타일시트를 컴파일합니다. | 스타일시트 URI를 확인합니다. -그리고- 모든 xsl:import 요소 또는 xsl:include 요소의 URI 참조를 확인합니다. |
스타일시트를 실행합니다. | 컨텍스트 문서의 URI를 확인합니다. -그리고- 모든 XSLT document() 함수에서 URI 참조를 확인합니다. |
및 Load 메서드에는 Transform 개체를 인수 중 하나로 사용하는 XmlResolver 오버로드가 포함됩니다. XmlResolver 지정하지 않으면 자격 증명이 없는 기본값 XmlUrlResolver 이 사용됩니다.
다음 목록에서는 XmlResolver 개체를 지정하고자 할 때를 설명합니다.
XSLT 프로세스가 인증이 필요한 네트워크 리소스에 액세스해야 하는 경우 필요한 자격 증명과 XmlResolver 함께 사용할 수 있습니다.
XSLT 프로세스에서 액세스할 수 있는 리소스를 제한하려면 올바른 권한 집합을 XmlSecureResolver 사용하여 사용할 수 있습니다. XmlSecureResolver 제어하지 않거나 신뢰할 수 없는 리소스를 열어야 하는 경우 클래스를 사용합니다.
동작을 사용자 지정하려는 경우 고유한 클래스를 XmlResolver 구현하고 이를 사용하여 리소스를 확인할 수 있습니다.
외부 리소스에 액세스하지 않도록 하려면
null
인수를 XmlResolver로 지정할 수 있습니다.
예시
다음 예제에서는 네트워크 리소스에 저장된 스타일시트를 컴파일합니다. 개체는 XmlUrlResolver 스타일시트에 액세스하는 데 필요한 자격 증명을 지정합니다.
// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("http://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("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName, SecurelyStoredPassword, Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://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("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)
참고하십시오
.NET