Yes, you see the picture :-)
Create your own xslt library where you have all of your .net code and then return xml to your xslt.
This way you keep your presentation layer total flexible
I don't think there is a updated umbraco.library reference
The easy way is to download <a href="http://www.aisto.com/roeder/dotnet/">Reflector for .NET</a> and just drop the umbraco.dll into it and browse to the umbraco.library then you can see all methods (and how the work internal)
Here is a dump from reflector containing all methods in umbraco.library
public static string CurrentDate();
public static string DateAdd(DateTime Date, string AddType, int add);
public static string DateAdd(string Date, string AddType, int add);
public static int DateDiff(DateTime firstDate, DateTime secondDate, string diffType);
public static int DateDiff(string firstDate, string secondDate, string diffType);
public static bool DateGreaterThan(string firstDate, string secondDate);
public static bool DateGreaterThanOrEqual(string firstDate, string secondDate);
public static bool DateGreaterThanOrEqualToday(string firstDate);
public static bool DateGreaterThanToday(string firstDate);
public static string FormatDateTime(string Date, string Format);
private static void generateXmlDocument(int parentId, XmlNode parentNode);
public static Domain[] GetCurrentDomains(int NodeId);
public static XPathNodeIterator GetCurrentMember();
public static string GetDictionaryItem(string Key);
public static XPathNodeIterator GetDictionaryItems(string Key);
public static string GetItem(string alias);
public static string GetItem(int nodeID, string alias);
public static XPathNodeIterator GetMedia(int MediaId, bool Deep);
public static XPathNodeIterator GetMember(int MemberId);
public static string GetMemberName(int MemberId);
public static string GetNodeFromLevel(string path, int level);
public static string GetPreValueAsString(int Id);
public static XPathNodeIterator GetPreValues(int DataTypeId);
public static string GetPropertyTypeName(string ContentTypeAlias, string PropertyTypeAlias);
public static Random GetRandom();
public static Random GetRandom(int seed);
public static Relation[] GetRelatedNodes(int NodeId);
public static XPathNodeIterator GetRelatedNodesAsXml(int NodeId);
private static string getUrlByDomain(int DocumentId, string tempUrl, bool atDomain, string currentDomain, bool emptyOnSameDomain);
public static string GetWeekDay(string Date);
public static XPathNodeIterator GetXmlAll();
public static XPathNodeIterator GetXmlDocument(string Path, bool Relative);
public static XPathNodeIterator GetXmlDocumentByUrl(string Url);
public static XPathNodeIterator GetXmlNodeById(string id);
public static XPathNodeIterator GetXmlNodeByXPath(string xpathQuery);
public static XPathNodeIterator GetXmlNodeCurrent();
public static bool HasAccess(int NodeId, string Path);
public static bool IsLoggedOn();
public static bool IsProtected(int DocumentId, string Path);
public static int LastIndexOf(string Text, string Value);
public static string LongDate(string Date);
public static string LongDate(string Date, bool WithTime, string TimeSplitter);
public static string LongDateWithDayName(string Date, string DaySplitter, bool WithTime, string TimeSplitter, string GlobalAlias);
public static string NiceUrl(int nodeID);
private static string niceUrlDo(int nodeID, int startNodeDepth);
public static string NiceUrlFullPath(int nodeID);
public string PageElement(string key);
public int PageId();
public string PageName();
public static void PublishDocument(Guid nodeID, bool publishChildren, User u);
public static void PublishSingleNode(int DocumentId);
public static void PublishSingleNodeDo(int DocumentId);
public static string QueryForNode(string id);
public static string RemoveFirstParagraphTag(string text);
public static string RenderMacroContent(string Text, int PageId);
public static string RenderTemplate(int PageId);
public static string RenderTemplate(int PageId, int TemplateId);
public static string Replace(string text, string oldValue, string newValue);
public static string ReplaceLineBreaks(string text);
public static string RePublishNodes(int nodeID);
public static void RePublishNodesDotNet(int nodeID);
public static string Request(string key);
public static string RequestCookies(string key);
public static string RequestForm(string key);
public static string RequestQueryString(string key);
public static string RequestServerVariables(string key);
public static void SaveXmlCache(XmlDocument Xd, bool WithDCT);
public static void SendMail(string FromMail, string ToMail, string Subject, string Body, bool IsHtml);
public static string Session(string key);
public static string SessionId();
public static void setSession(string key, string value);
public static string ShortDate(string Date);
public static string ShortDate(string Date, bool WithTime, string TimeSplitter);
public static string ShortDateWithGlobal(string Date, string GlobalAlias);
public static string ShortDateWithTimeAndGlobal(string Date, string GlobalAlias);
public static string ShortTime(string Date);
public static XPathNodeIterator Split(string StringToSplit, string Separator);
public static string StripHtml(string text);
public static string Tidy(string StringToTidy, bool LiveEditing);
public static string TruncateString(string Text, int MaxLength, string AddString);
public static void UnPublishSingleNode(int DocumentId);
private static void XmlChanged();
Regards/Christian
<a href="http://www.cpalm.dk">www.cpalm.dk</a>
CPalm,
www.cpalm.dk