次の方法で共有


XslTransform.Load メソッド (XmlReader, XmlResolver, Evidence)

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

XmlReader に含まれる XSLT スタイルシートを読み込みます。このメソッドを使用すると、証拠を指定することによって、スタイルシートのアクセス許可を制限できます。

Overloads Public Sub Load( _
   ByVal stylesheet As XmlReader, _   ByVal resolver As XmlResolver, _   ByVal evidence As Evidence _)
[C#]
public void Load(XmlReaderstylesheet,XmlResolverresolver,Evidenceevidence);
[C++]
public: void Load(XmlReader* stylesheet,XmlResolver* resolver,Evidence* evidence);
[JScript]
public function Load(
   stylesheet : XmlReader,resolver : XmlResolver,evidence : Evidence);

パラメータ

  • stylesheet
    読み込むスタイルシートを格納している XmlReader オブジェクト。

  • resolver
    xsl:import 要素および xsl:include 要素で参照される任意のスタイル シートを読み込むために使用される XmlResolver 。これが null 参照 (Visual Basic では Nothing) の場合は、外部リソースが解決されません。

    Load メソッドが完了した後、 XmlResolver がキャッシュされていません。

  • evidence
    XSLT スタイルシート内のスクリプト ブロックに対して生成されたアセンブリに設定された System.Security.Policy.Evidence

    これが null 参照 (Visual Basic では Nothing) の場合、スクリプト ブロックは処理されません。また、XSLT の document() 関数はサポートされず、特権拡張機能オブジェクトは許可されません。

    呼び出し元には、スクリプト アセンブリの証拠を提供するための ControlEvidence アクセス許可が必要です。信頼度の低い呼び出し元は、このパラメータを null 参照 (Nothing) に設定できます。

例外

例外の種類 条件
XsltCompileException 現在のノードは、有効なスタイル シートに準拠していません。
SecurityException 参照されるスタイルシートは、提供された証拠で許可されない機能を要求します。

呼び出し元は証拠を提供しようとしましたが、 ControlEvidence アクセス許可を持っていません。

解説

XslTransform は、XSLT 1.0 構文をサポートしています。XSLT スタイル シートには、名前空間宣言 xmlns:xsl= http://www.w3.org/1999/XSL/Transform を含める必要があります。

このメソッドは、 xsl:include 要素および xsl:import 要素で参照される任意のスタイル シートを含む XSLT スタイル シートを読み込みます。スタイル シートは、 XmlReader の現在のノードから、すべての子を通じて読み込まれます。これにより、ドキュメントの一部をスタイル シートとして使用できます。

Load メソッドが返されると、 XmlReader は、スタイル シートの末尾の後の次のノードに配置されます。ドキュメントの末尾に達すると、 XmlReader は、ファイルの末尾 (EOF) に配置されます。

スタイル シートにエンティティが含まれている場合は、エンティティを解決できる XmlReader を指定する必要があります。 XmlReader.CanResolveEntitytrue を返します。この場合は、 XmlValidatingReader を使用できます。

証拠を提供するにはさまざまな方法があります。一般的なユーザー シナリオに対してどの種類の証拠を提供するかを次の表に示します。

シナリオ 提供する証拠の種類
XSLT スタイルシートは、単体で使用できるものか、信頼するコード ベースのものです。 アセンブリからの証拠を使用します。

XsltTransform xslt = new XslTransform();

xslt.Load(xslReader, resolver, this.GetType().Assembly.Evidence);

XSLT スタイルシートは外部ソースのものです。ソースの起点は既知であり、検証可能な URL があります。 URL を使用して証拠を作成します。

XsltTransform xslt = new XslTransform();

Evidence evidence = XmlSecureResolver.CreateEvidenceForUrl(stylesheetURL);

xslt.Load(xslReader,resolver,evidence);

XSLT スタイルシートは外部ソースのものです。ソースの起点が既知ではありません。 証拠を null 参照 (Visual Basic では Nothing) に設定します。スクリプト ブロックは処理されません。また、XSLT の document() 関数はサポートされず、特権拡張機能オブジェクトは許可されません。

さらに、 resolver パラメータを null 参照 (Nothing) に設定することもできます。これによって、 xsl:import 要素および xsl:include 要素が処理されないことが保証されます。

XSLT スタイルシートは外部ソースのものです。ソースの起点は既知ではありませんが、スクリプト サポートは必要です。 読み出し元から証拠を要求します。呼び出し元の API は、証拠、一般的には Evidence クラス、を提供する方法を提供する必要があります。

使用例

[Visual Basic, C#, C++] XSLT 変換を実行する例を次に示します。 xsltReader は、スタイルシートを含む XmlReader で、 secureURL は、 Evidence を作成するときに使用できる信頼された URL です。 XmlSecureResolver.CreateEvidenceForUrl メソッドは、スタイルシートに適用する Evidence を作成するときに使用します。

 

   public shared sub TransformFile (xsltReader as XmlReader, secureURL as String) 
    
    ' Load the stylesheet using a default XmlUrlResolver and Evidence 
    ' created using the trusted URL.
    Dim xslt as XslTransform = new XslTransform()
    xslt.Load(xsltReader, new XmlUrlResolver(), XmlSecureResolver.CreateEvidenceForUrl(secureURL))

    ' Transform the file.
    xslt.Transform("books.xml", "books.html", new XmlUrlResolver())
   end sub

[C#] 

   public static void TransformFile (XmlReader xsltReader, String secureURL) {
    
    // Load the stylesheet using a default XmlUrlResolver and Evidence 
    // created using the trusted URL.
    XslTransform xslt = new XslTransform();
    xslt.Load(xsltReader, new XmlUrlResolver(), XmlSecureResolver.CreateEvidenceForUrl(secureURL));

    // Transform the file.
    xslt.Transform("books.xml", "books.html", new XmlUrlResolver());
   } 

[C++] 

void TransformFile (XmlReader* xsltReader, String* secureURL) {

    // Load the stylesheet using a default XmlUrlResolver and Evidence 
    // created using the trusted URL.
    XslTransform* xslt = new XslTransform();
    xslt->Load(xsltReader, new XmlUrlResolver(), XmlSecureResolver::CreateEvidenceForUrl(secureURL));

    // Transform the file.
    xslt->Transform(S"books.xml", S"books.html", new XmlUrlResolver());
} 

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

XslTransform クラス | XslTransform メンバ | System.Xml.Xsl 名前空間 | XslTransform.Load オーバーロードの一覧 | XmlResolver.Credentials | NetworkCredential | CredentialCache | 証拠 | System.Security.SecurityZone | XmlSecureResolver | XmlSecureResolver.CreateEvidenceForUrl