2 * Namespace: System.Web.UI.WebControls
\r
5 * Author: Gaurav Vaish, Gonzalo Paniagua Javier
\r
6 * Maintainer: gvaish@iitk.ac.in
\r
7 * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>, <gonzalo@ximian.com>
\r
8 * Implementation: yes
\r
11 * (C) Gaurav Vaish (2002)
\r
12 * (c) 2002 Ximian, Inc. (http://www.ximian.com)
\r
16 using System.ComponentModel;
\r
19 using System.Xml.Xsl;
\r
20 using System.Xml.XPath;
\r
22 using System.Web.UI;
\r
24 namespace System.Web.UI.WebControls
\r
26 [DefaultProperty("DocumentSource")]
\r
27 [PersistChildren(false)]
\r
28 public class Xml : Control
\r
30 private XmlDocument document;
\r
31 private string documentContent;
\r
32 private string documentSource;
\r
33 private XslTransform transform;
\r
34 private XsltArgumentList transformArgumentList;
\r
35 private string transformSource;
\r
37 private XPathDocument xpathDoc;
\r
39 private static XslTransform defaultTransform;
\r
43 XmlTextReader reader = new XmlTextReader(new StringReader("<xsl:stylesheet version='1.0' " +
\r
44 "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>" +
\r
45 "<xsl:template match=\"*\">" +
\r
46 "<xsl:copy-of select=\".\"/>" +
\r
48 "</xsl:stylesheet>"));
\r
49 defaultTransform = new XslTransform();
\r
50 defaultTransform.Load(reader);
\r
53 public Xml(): base()
\r
57 [MonoTODO("security")]
\r
58 private void LoadXmlDoc ()
\r
60 if (documentContent != null && documentContent.Length > 0) {
\r
61 document = new XmlDocument();
\r
62 document.LoadXml (documentContent);
\r
66 if (documentSource != null && documentSource.Length != 0) {
\r
67 document = new XmlDocument();
\r
68 document.Load (documentSource);
\r
72 public XmlDocument Document
\r
76 if(document == null)
\r
82 documentSource = null;
\r
83 documentContent = null;
\r
89 public string DocumentContent
\r
93 return String.Empty;
\r
99 documentContent = value;
\r
103 public string DocumentSource
\r
107 if(documentSource != null)
\r
108 return documentSource;
\r
109 return String.Empty;
\r
114 documentContent = null;
\r
116 documentSource = MapPathSecure (value);
\r
120 public XslTransform Transform
\r
128 transformSource = null;
\r
133 public string TransformSource
\r
137 if(transformSource != null)
\r
138 return transformSource;
\r
139 return String.Empty;
\r
144 transformSource = value;
\r
148 public XsltArgumentList TransformArgumentList
\r
152 return transformArgumentList;
\r
156 transformArgumentList = value;
\r
160 protected override void AddParsedSubObject(object obj)
\r
162 if(obj is LiteralControl)
\r
164 DocumentContent = ((LiteralControl)obj).Text;
\r
167 throw new HttpException (HttpRuntime.FormatResourceString (
\r
168 "Cannot_Have_Children_of_Type",
\r
173 [MonoTODO("security")]
\r
174 private void LoadXpathDoc ()
\r
176 if(documentContent != null && documentContent.Length > 0) {
\r
177 xpathDoc = new XPathDocument (new StringReader (documentContent));
\r
181 if (documentSource != null && documentSource.Length != 0) {
\r
182 xpathDoc = new XPathDocument (MapPathSecure (documentSource));
\r
187 [MonoTODO("security")]
\r
188 private void LoadTransform ()
\r
190 if (transform != null)
\r
193 if (transformSource != null && transformSource.Length != 0) {
\r
194 transform = new XslTransform ();
\r
195 transform.Load (MapPathSecure (transformSource));
\r
199 protected override void Render(HtmlTextWriter output)
\r
201 if(document == null)
\r
207 if(document == null && xpathDoc == null)
\r
211 if(transform == null)
\r
213 transform = defaultTransform;
\r
215 if(document != null)
\r
217 Transform.Transform(document, transformArgumentList, output);
\r
220 Transform.Transform(xpathDoc, transformArgumentList, output);
\r