Update of /cvsroot/mvp-xml/XInclude/v1/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17141/v1/src
Modified Files:
XIncludingReader.cs
Log Message:
Fixed empty base URI bug.
Index: XIncludingReader.cs
===================================================================
RCS file: /cvsroot/mvp-xml/XInclude/v1/src/XIncludingReader.cs,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- XIncludingReader.cs 3 Nov 2004 12:55:41 -0000 1.26
+++ XIncludingReader.cs 3 Nov 2004 14:17:36 -0000 1.27
@@ -9,6 +9,7 @@
using System.Text;
using System.Security;
using System.Collections;
+using System.Reflection;
using Mvp.Xml.Common;
using Mvp.Xml.Common.XPath;
@@ -93,7 +94,13 @@
_nameTable = reader.NameTable;
_keywords = new XIncludeKeywords(NameTable);
- _topBaseUri = new Uri(_reader.BaseURI);
+ if (_reader.BaseURI != "")
+ _topBaseUri = new Uri(_reader.BaseURI);
+ else
+ {
+ _relativeBaseUri = false;
+ _topBaseUri = new Uri(Assembly.GetExecutingAssembly().Location);
+ }
_readers = new Stack();
_state = XIncludingReaderState.Default;
}
@@ -641,10 +648,8 @@
case XIncludingReaderState.ExposingXmlBaseAttr:
case XIncludingReaderState.ExposingXmlBaseAttrValue:
if (_reader.BaseURI == String.Empty)
- {
- //No Base URI? Use previous one's.
- //TODO:How come?
- return ((XmlReader)_readers.Peek()).BaseURI;
+ {
+ return String.Empty;
}
if (_relativeBaseUri)
{
@@ -1095,10 +1100,11 @@
Uri includeLocation;
try
{
- if (_xmlResolver == null)
- includeLocation = new Uri(new Uri(_reader.BaseURI), href, false);
+ Uri baseURI = _reader.BaseURI==""? _topBaseUri : new Uri(_reader.BaseURI);
+ if (_xmlResolver == null)
+ includeLocation = new Uri(baseURI, href, false);
else
- includeLocation = _xmlResolver.ResolveUri(new Uri(_reader.BaseURI), href);
+ includeLocation = _xmlResolver.ResolveUri(baseURI, href);
}
catch(UriFormatException ufe)
{
@@ -1444,12 +1450,14 @@
/// </summary>
private void CheckLoops(Uri url, string xpointer)
{
- //Check circular inclusion
- if (new Uri(_reader.BaseURI).Equals(url))
+ //Check circular inclusion
+ Uri baseUri = _reader.BaseURI==""? _topBaseUri : new Uri(_reader.BaseURI);
+ if (baseUri.Equals(url))
ThrowCircularInclusionError(_reader, url);
foreach (XmlReader r in _readers)
- {
- if (new Uri(r.BaseURI).Equals(url))
+ {
+ baseUri = r.BaseURI==""? _topBaseUri : new Uri(r.BaseURI);
+ if (baseUri.Equals(url))
ThrowCircularInclusionError(_reader, url);
}
}
|