Sdílet prostřednictvím


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 zadatnull.

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)

Viz také