From: Oleg T. <he...@us...> - 2004-10-25 19:32:49
|
Update of /cvsroot/mvp-xml/XInclude/v1/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8014/v1/src Modified Files: XInclude.csproj XIncludingReader.cs Log Message: Integrated XmlBaseAwareXmltextReader. Index: XInclude.csproj =================================================================== RCS file: /cvsroot/mvp-xml/XInclude/v1/src/XInclude.csproj,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- XInclude.csproj 14 Oct 2004 07:26:13 -0000 1.5 +++ XInclude.csproj 25 Oct 2004 19:32:39 -0000 1.6 @@ -145,6 +145,12 @@ BuildAction = "EmbeddedResource" /> <File + RelPath = "Common\XmlBaseAwareXmlTextReader.cs" + Link = "..\..\..\Common\v1\src\XmlBaseAwareXmlTextReader.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "Common\XmlFirstLowerWriter.cs" Link = "..\..\..\Common\v1\src\XmlFirstLowerWriter.cs" SubType = "Code" Index: XIncludingReader.cs =================================================================== RCS file: /cvsroot/mvp-xml/XInclude/v1/src/XIncludingReader.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- XIncludingReader.cs 22 Oct 2004 14:56:42 -0000 1.14 +++ XIncludingReader.cs 25 Oct 2004 19:32:39 -0000 1.15 @@ -2,12 +2,14 @@ using System; using System.Xml; +using System.Xml.Schema; using System.IO; using System.Net; using System.Text; using System.Security; using System.Collections; +using Mvp.Xml.Common; using Mvp.Xml.XPointer; #endregion @@ -78,10 +80,17 @@ XmlTextReader xtr = reader as XmlTextReader; if (xtr != null) { + XmlValidatingReader vr = new XmlValidatingReader(reader); + vr.ValidationType = ValidationType.None; + vr.EntityHandling = EntityHandling.ExpandEntities; + vr.ValidationEventHandler += new ValidationEventHandler( + ValidationCallback); _normalization = xtr.Normalization; _whiteSpaceHandling = xtr.WhitespaceHandling; + _reader = vr; } - _reader = reader; + else + _reader = reader; _nameTable = reader.NameTable; Init(); } @@ -91,7 +100,8 @@ /// specified URL. /// </summary> /// <param name="url">Document location.</param> - public XIncludingReader(string url) : this(new XmlTextReader(url)) {} + public XIncludingReader(string url) + : this(new XmlBaseAwareXmlTextReader(url)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with @@ -100,14 +110,15 @@ /// <param name="url">Document location.</param> /// <param name="nt">Name table.</param> public XIncludingReader(string url, XmlNameTable nt) : - this(new XmlTextReader(url, nt)) {} + this(new XmlBaseAwareXmlTextReader(url, nt)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with /// specified <c>TextReader</c> reader. /// </summary> /// <param name="reader"><c>TextReader</c>.</param> - public XIncludingReader(TextReader reader) : this(new XmlTextReader(reader)) {} + public XIncludingReader(TextReader reader) + : this(new XmlBaseAwareXmlTextReader(reader)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with @@ -116,14 +127,15 @@ /// <param name="reader"><c>TextReader</c>.</param> /// <param name="nt">Nametable.</param> public XIncludingReader(TextReader reader, XmlNameTable nt) : - this(new XmlTextReader(reader, nt)) {} + this(new XmlBaseAwareXmlTextReader(reader, nt)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with /// specified <c>Stream</c>. /// </summary> /// <param name="input"><c>Stream</c>.</param> - public XIncludingReader(Stream input) : this(new XmlTextReader(input)) {} + public XIncludingReader(Stream input) + : this(new XmlBaseAwareXmlTextReader(input)) {} /// <summary> /// Creates new instance of <c>XIncludingReader</c> class with @@ -132,7 +144,7 @@ /// <param name="input"><c>Stream</c>.</param> /// <param name="nt">Nametable</param> public XIncludingReader(Stream input, XmlNameTable nt) : - this(new XmlTextReader(input, nt)) {} + this(new XmlBaseAwareXmlTextReader(input, nt)) {} #endregion @@ -677,7 +689,10 @@ //Read internal reader bool baseRead = _reader.Read(); if (baseRead) - { + { + //No provision to preserve whitespace outside document element + if (_reader.Depth == 0 && _reader.NodeType == XmlNodeType.Whitespace) + return Read(); //If we are including and including reader is at 0 depth - //we are in top level included item _topLevel = (_readers.Count>0 && _reader.Depth == 0)? true : false; @@ -825,6 +840,12 @@ #region Private methods + //Dummy validation even handler + private static void ValidationCallback(object sender, ValidationEventArgs args) + { + //do nothing + } + /// <summary> /// Internal initializer. /// </summary> @@ -972,7 +993,7 @@ _reader = new XPointerReader(wRes.ResponseUri, stream, _nameTable, includeLocation.Fragment.Substring(1)); else { - _reader = new XmlTextReader(wRes.ResponseUri.AbsoluteUri, stream, _nameTable); + _reader = new XmlBaseAwareXmlTextReader(wRes.ResponseUri.AbsoluteUri, stream, _nameTable); ((XmlTextReader)_reader).Normalization = _normalization; ((XmlTextReader)_reader).WhitespaceHandling = _whiteSpaceHandling; } @@ -996,7 +1017,7 @@ //Ok, we accept Stream and XmlReader only XmlReader r; if (resource is Stream) - r = new XmlTextReader(includeLocation.AbsoluteUri, (Stream)resource, _nameTable); + r = new XmlBaseAwareXmlTextReader(includeLocation.AbsoluteUri, (Stream)resource, _nameTable); else if (resource is XmlReader) r = (XmlReader)resource; else |