Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Během transformace XSLT je několikrát potřeba vyřešit externí prostředky.
Použití třídy XmlResolver
Třída XmlResolver se používá k řešení externích zdrojů. Následující tabulka popisuje, kdy se stane XmlResolver součástí zpracování XSLT.
| XSLT – úloha | K čemu se xmlResolver používá |
|---|---|
| Zkompilujte šablonu stylů. | Vyřešte identifikátor URI šablony stylů. a Vyřešte odkazy na URI v jakýchkoli xsl:import nebo xsl:include elementech. |
| Spustit šablonu stylů. | Vyřešte identifikátor URI kontextového dokumentu. a Vyřešte odkazy na identifikátor URI ve všech funkcích XSLT document() . |
Load a Transform metody zahrnují přetížení, která přebírají XmlResolver objekt jako jeden z jejich argumentů. Pokud není zadaný XmlResolver, použije se výchozí XmlUrlResolver bez přihlašovacích údajů.
Následující seznam popisuje, kdy chcete zadat XmlResolver objekt:
Pokud proces XSLT potřebuje přístup k síťovému prostředku, který vyžaduje ověření, můžete použít XmlResolver s potřebnými přihlašovacími údaji.
Pokud chcete omezit prostředky, ke kterým má proces XSLT přístup, můžete použít XmlSecureResolver správnou sadu oprávnění. Použijte třídu XmlSecureResolver, pokud potřebujete otevřít prostředek, který neřídíte, nebo který není důvěryhodný.
Pokud chcete přizpůsobit chování, můžete implementovat vlastní XmlResolver třídu a použít ji ke spravování prostředků.
Pokud chcete zajistit, aby nebyly přistupovány žádné externí prostředky, můžete zadat
nullpro argument XmlResolver.
Příklad
Následující příklad zkompiluje šablonu stylů uloženou v síťovém prostředku. Objekt XmlUrlResolver určuje přihlašovací údaje potřebné pro přístup k šabloně stylů.
// 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)