Заказчику потребовалось использовать в 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));
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();
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);
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);
Комментариев нет:
Отправить комментарий