Megosztás a következőn keresztül:


Külső erőforrások feloldása az XSLT-feldolgozás során

Az XSLT-átalakítás során több alkalommal is előfordulhat, hogy külső erőforrásokat kell feloldania.

Az XmlResolver osztály használata

Az XmlResolver osztály a külső erőforrások feloldására szolgál. Az alábbi táblázat azt ismerteti, hogy mikor kerül sor az XmlResolver XSLT-feldolgozásra.

XSLT-tevékenység Az XmlResolver használata
Állítsa össze a stíluslapot. A stíluslap URI-jának feloldása.

-és-

URI-hivatkozások feloldása bármely xsl:import vagy xsl:include elemben.
Hajtsa végre a stíluslapot. A környezeti dokumentum URI-jának feloldása.

-és-

Az URI-hivatkozások feloldása bármely XSLT-függvényben document() .

Transform A Load metódusok közé tartoznak azok a túlterhelések, amelyek az XmlResolver objektumok argumentumai közé tartoznak. Ha nincs megadva, XmlResolver a rendszer egy hitelesítő adatok nélküli alapértelmezett XmlUrlResolver beállítást használ.

Az alábbi lista azt ismerteti, hogy mikor érdemes megadni egy objektumot XmlResolver :

  • Ha az XSLT-folyamatnak egy hitelesítést igénylő hálózati erőforráshoz kell hozzáférnie, használhatja XmlResolver a szükséges hitelesítő adatokat.

  • Ha korlátozni szeretné az XSLT-folyamat által elérhető erőforrásokat, használhatja XmlSecureResolver a megfelelő engedélykészletet. Használja az XmlSecureResolver osztályt, ha olyan erőforrást kell megnyitnia, amelyet nem szabályoz, vagy amely nem megbízható.

  • Ha testre szeretné szabni a viselkedést, implementálhatja saját XmlResolver osztályát, és felhasználhatja az erőforrások megoldására.

  • Ha meg szeretné győződni arról, hogy nem fér hozzá külső erőforrásokhoz, megadhatja null az XmlResolver argumentumot.

Példa

Az alábbi példa egy hálózati erőforráson tárolt stíluslapot állít össze. Egy XmlUrlResolver objektum megadja a stíluslap eléréséhez szükséges hitelesítő adatokat.

// 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)

Lásd még