XSLT 処理中の外部リソースの解決
XSLT 変換中には、外部リソースの解決が必要になる場合があります。
XmlResolver クラスの使い方
外部リソースを解決するには、XmlResolver クラスを使用します。 XSLT 処理中に XmlResolver が使用される場合を次の表に示します。
XSLT タスク | XmlResolver が使用される場合 |
---|---|
スタイル シートのコンパイル。 | スタイル シートの URI の解決。 および xsl:import 要素または xsl:include 要素の URI リファレンスの解決。 |
スタイル シートの実行。 | コンテキスト ドキュメントの URI の解決。 および XSLT の document() 関数での URI リファレンスの解決。 |
Load メソッドおよび Transform メソッドには、XmlResolver オブジェクトを引数の 1 つとして受け取るオーバーロードが含まれます。 XmlResolver を指定しない場合は、資格情報を持たない既定の XmlUrlResolver が使用されます。
XmlResolver オブジェクトを使用する場合の説明を次の一覧に示します。
XSLT 処理で認証が必要なネットワーク リソースにアクセスする必要がある場合、必要な資格情報に対して XmlResolver を使用します。
XSLT 処理がアクセスできるリソースを制限する場合、適切なアクセス許可セットに対して XmlSecureResolver を使用します。 制御対象外の (信頼できない) リソースを開く場合には、XmlSecureResolver クラスを使用します。
動作をカスタマイズする場合は、独自の XmlResolver クラスを実装し、これを使用してリソースを解決することができます。
外部リソースにアクセスできないようにする場合は、XmlResolver の引数に
null
を指定します。
例
ネットワーク リソースに格納されているスタイル シートをコンパイルする例を次に示します。 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