static public CreateReader ( XmlReader baseReader, System.Xml.Xsl.Runtime.WhitespaceRuleLookup wsRules ) : XmlReader | ||
baseReader | XmlReader | |
wsRules | System.Xml.Xsl.Runtime.WhitespaceRuleLookup | |
return | XmlReader |
/// <summary> /// Ensure that "dataSource" is cached as an XPathDocument and return a navigator over the document. /// </summary> private XPathNavigator ConstructDocument(object dataSource, string uriRelative, Uri uriResolved) { Debug.Assert(dataSource != null, "GetType() below assumes dataSource is not null"); Stream stream = dataSource as Stream; if (stream != null) { // Create document from stream XmlReader reader = _readerSettings.CreateReader(stream, uriResolved != null ? uriResolved.ToString() : null); try { // Create WhitespaceRuleReader if whitespace should be stripped return(new XPathDocument(WhitespaceRuleReader.CreateReader(reader, _wsRules), XmlSpace.Preserve).CreateNavigator()); } finally { // Always close reader that was opened here reader.Close(); } } else if (dataSource is XmlReader) { // Create document from reader // Create WhitespaceRuleReader if whitespace should be stripped return(new XPathDocument(WhitespaceRuleReader.CreateReader(dataSource as XmlReader, _wsRules), XmlSpace.Preserve).CreateNavigator()); } else if (dataSource is IXPathNavigable) { if (_wsRules != null) { throw new XslTransformException(SR.XmlIl_CantStripNav, string.Empty); } return((dataSource as IXPathNavigable).CreateNavigator()); } Debug.Assert(uriRelative != null, "Relative URI should not be null"); throw new XslTransformException(SR.XmlIl_CantResolveEntity, uriRelative, dataSource.GetType().ToString()); }