次の方法で共有


XSLT 処理中の外部リソースの解決

更新 : November 2007

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.
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 変換