共用方式為


在 XSLT 處理期間解析外部資源

在 XSLT 轉換的過程中,有幾個時機您可能需要解析外部資源。

使用 XmlResolver 類別

類別 XmlResolver 是用來解析外部資源。 下表描述了 XmlResolver 在 XSLT 處理過程中何時參與。

XSLT 任務 XmlResolver 的用途
編譯樣式表單。 解析樣式表的URI。

-及-

解析任何 xsl:importxsl:include 元素中的 URI 參考。
執行樣式表單。 解析上下文文件的 URI。

-及-

解析任何 XSLT document() 函式中的 URI 參考。

LoadTransform 方法包含重載,其中以一個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)

另請參閱