Překlad externích prostředků během zpracování XSLT
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 překladu externích prostředků. 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 identifikátor URI v libovolném xsl:import nebo xsl:include elementu. |
Spusťte š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() . |
Tyto Load metody Transform zahrnují přetížení, která přebírají XmlResolver objekt jako jeden z jeho argumentů. XmlResolver Pokud není zadaný, použije se výchozí XmlUrlResolver hodnota 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í. XmlSecureResolver Třídu použijte, 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 k řešení prostředků.
Pokud chcete zajistit, aby se k argumentu nepřistupovaly žádné externí prostředky, můžete pro XmlResolver tento argument zadat
null
.
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)