среда, декабря 28, 2005

Из Writely

Из C# Express через Word: с заменой абзаца на разрыв строки

/// <summary>
///
Description for XmlView.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:XmlView runat=server></{0}:XmlView>"),
XmlRoot(Namespace="XMLviewer")]
public class XmlView : Microsoft.SharePoint.WebPartPages.WebPart {
private const string defaultText = "XmlView";
private string text = defaultText;
private string xml = "";
private string xmllink = "";
private string xsl = "";
private string xsllink = "";
private Evidence evidence=null;
}


XmlWebPart & XmlView continued

Заказчику потребовалось использовать в xslt-преобразователе конструкцию <xsl:apply-templates select="document(file)..."/>
В стандартном XmlWebPart - работает. В моём XmlView - ни в какую.
При раскопках выяснилось, что загружать xsl нужно не конструкцией, которая сама напрашивается

XmlDocument xsl = new XmlDocument();
xsl.
LoadXml(xslScript); //в строке - текст xsl
XslTransform xslt =new XslTransform();
xslt.Load (new XmlNodeReader(xsl));
а немного поширше:

XmlDocument xsl = new XmlDocument();
xsl.
LoadXml(xslScript); //в строке - текст xsl
XslTransform xslt= new XslTransform();
XmlUrlResolver resolver=new XmlUrlResolver();
xslt. Load(new XmlNodeReader(xsl), resolver, XmlSecureResolver .CreateEvidenceForUrl(XslLink));
В .NET 2.0 опять по-другому:

XmlDocument xsl = new XmlDocument();
xsl.Load(
http://...test.xsl
);
XmlUrlResolver resolver=new XmlUrlResolver
();
resolver.Credentials =
CredentialCache
.DefaultNetworkCredentials;
XslCompiledTransform xslt= new XslCompiledTransform();
XsltSettings settings = new XsltSettings
();
settings.EnableDocumentFunction =
true
;
settings.EnableScript =
true
;
xslt.Load(
new XmlNodeReader
(xsl),settings,resolver);

вторник, декабря 13, 2005

Очередной прикол от Sharepoint

Фрагменты
SPList list = web.Lists[ListName];
SPListItem WholeItem = list.Items[0];
WholeItem["Viewers"] = text;
WholeItem.Update();

и

SPList list = web.Lists[ListName];
list.Items[0]["Viewers"] = text;
list.Items[0].Update();


имеют совершенно разный эффект - второй ничего никуда не пишет!