XSLT 처리 중 외부 리소스 확인
다음과 같이 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