From: Oleg T. <he...@us...> - 2004-10-28 13:02:05
|
Update of /cvsroot/mvp-xml/XInclude/v1/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2444/v1/src Modified Files: XInclude.csproj XIncludingReader.cs Log Message: Working on bugs. Index: XInclude.csproj =================================================================== RCS file: /cvsroot/mvp-xml/XInclude/v1/src/XInclude.csproj,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- XInclude.csproj 25 Oct 2004 19:32:39 -0000 1.6 +++ XInclude.csproj 28 Oct 2004 13:01:51 -0000 1.7 @@ -77,7 +77,7 @@ <Reference Name = "System.XML" AssemblyName = "System.Xml" - HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" + HintPath = "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" /> </References> </Build> @@ -235,12 +235,6 @@ BuildAction = "Compile" /> <File - RelPath = "Common\XPath\XPathIteratorReader.cs" - Link = "..\..\..\Common\v1\src\XPath\XPathIteratorReader.cs" - SubType = "Code" - BuildAction = "Compile" - /> - <File RelPath = "Common\XPath\XPathNavigatorIterator.cs" Link = "..\..\..\Common\v1\src\XPath\XPathNavigatorIterator.cs" SubType = "Code" Index: XIncludingReader.cs =================================================================== RCS file: /cvsroot/mvp-xml/XInclude/v1/src/XIncludingReader.cs,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- XIncludingReader.cs 26 Oct 2004 19:28:41 -0000 1.16 +++ XIncludingReader.cs 28 Oct 2004 13:01:51 -0000 1.17 @@ -68,7 +68,7 @@ //XmlResolver to resolve URIs XmlResolver _xmlResolver; //Expose text inclusions as CDATA - private bool _exposeTextAsCDATA; + private bool _exposeTextAsCDATA; #endregion #region Constructors @@ -121,6 +121,15 @@ /// <param name="reader"><c>TextReader</c>.</param> public XIncludingReader(TextReader reader) : this(new XmlBaseAwareXmlTextReader(reader)) {} + + /// <summary> + /// Creates new instance of <c>XIncludingReader</c> class with + /// specified URL and <c>TextReader</c> reader. + /// </summary> + /// <param name="reader"><c>TextReader</c>.</param> + /// <param name="url">Source document's URL</param> + public XIncludingReader(string url, TextReader reader) + : this(new XmlBaseAwareXmlTextReader(url, reader)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with @@ -130,6 +139,16 @@ /// <param name="nt">Nametable.</param> public XIncludingReader(TextReader reader, XmlNameTable nt) : this(new XmlBaseAwareXmlTextReader(reader, nt)) {} + + /// <summary> + /// Creates new instance of <c>XIncludingReader</c> class with + /// specified URL, <c>TextReader</c> reader and nametable. + /// </summary> + /// <param name="reader"><c>TextReader</c>.</param> + /// <param name="nt">Nametable.</param> + /// <param name="url">Source document's URI</param> + public XIncludingReader(string url, TextReader reader, XmlNameTable nt) : + this(new XmlBaseAwareXmlTextReader(url, reader, nt)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with @@ -138,6 +157,15 @@ /// <param name="input"><c>Stream</c>.</param> public XIncludingReader(Stream input) : this(new XmlBaseAwareXmlTextReader(input)) {} + + /// <summary> + /// Creates new instance of <c>XIncludingReader</c> class with + /// specified URL and <c>Stream</c>. + /// </summary> + /// <param name="input"><c>Stream</c>.</param> + /// <param name="url">Source document's URL</param> + public XIncludingReader(string url, Stream input) + : this(new XmlBaseAwareXmlTextReader(url, input)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with @@ -147,6 +175,16 @@ /// <param name="nt">Nametable</param> public XIncludingReader(Stream input, XmlNameTable nt) : this(new XmlBaseAwareXmlTextReader(input, nt)) {} + + /// <summary> + /// Creates new instance of <c>XIncludingReader</c> class with + /// specified URL, <c>Stream</c> and nametable. + /// </summary> + /// <param name="input"><c>Stream</c>.</param> + /// <param name="nt">Nametable</param> + /// <param name="url">Source document's URL</param> + public XIncludingReader(string url, Stream input, XmlNameTable nt) : + this(new XmlBaseAwareXmlTextReader(url, input, nt)) {} #endregion @@ -714,7 +752,8 @@ case XmlNodeType.Document: case XmlNodeType.DocumentType: case XmlNodeType.DocumentFragment: - //This stuff should not be included + //This stuff should not be included into resulting infoset, + //but should be inclused into acquired infoset return _readers.Count>0? Read() : baseRead; case XmlNodeType.Element: //Check for xi:include @@ -1004,8 +1043,18 @@ if (xpointer != null) { //Well, XPointers should be resolved against the acquired infoset, - //not the source infoset - _reader = new XPointerReader(wRes.ResponseUri, stream, _nameTable, xpointer); + //not the source infoset + //TODO: Try to stream this stuff + string uri = wRes.ResponseUri.AbsoluteUri; + XIncludingReader xir = new XIncludingReader(uri, stream, _nameTable); + StringWriter sw = new StringWriter(); + XmlTextWriter w = new XmlTextWriter(sw); + while (xir.Read()) + w.WriteNode(xir, false); + xir.Close(); + w.Close(); + _reader = new XPointerReader(new XmlTextReader( + uri, new StringReader(sw.ToString())), xpointer); } else { @@ -1293,5 +1342,6 @@ } #endregion + } } |