+
+#ifdef XMLTOOLING_LITE
+
+URLInputSource::URLInputSource(const XMLCh* url, const char* systemId, string* cacheTag) : InputSource(systemId), m_url(url)
+{
+}
+
+URLInputSource::URLInputSource(const DOMElement* e, const char* systemId, string* cacheTag) : InputSource(systemId)
+{
+ static const XMLCh uri[] = UNICODE_LITERAL_3(u,r,i);
+ static const XMLCh url[] = UNICODE_LITERAL_3(u,r,l);
+
+ const XMLCh* attr = e->getAttributeNS(nullptr, url);
+ if (!attr || !*attr) {
+ attr = e->getAttributeNS(nullptr, uri);
+ if (!attr || !*attr)
+ throw IOException("No URL supplied via DOM to URLInputSource constructor.");
+ }
+
+ m_url.setURL(attr);
+}
+
+BinInputStream* URLInputSource::makeStream() const
+{
+ // Ask the URL to create us an appropriate input stream
+ return m_url.makeNewStream();
+}
+
+#else
+
+URLInputSource::URLInputSource(const XMLCh* url, const char* systemId, string* cacheTag)
+ : InputSource(systemId), m_cacheTag(cacheTag), m_url(url), m_root(nullptr)
+{
+}
+
+URLInputSource::URLInputSource(const DOMElement* e, const char* systemId, string* cacheTag)
+ : InputSource(systemId), m_cacheTag(cacheTag), m_root(e)
+{
+}
+
+BinInputStream* URLInputSource::makeStream() const
+{
+ return m_root ? new CurlURLInputStream(m_root, m_cacheTag) : new CurlURLInputStream(m_url.get(), m_cacheTag);
+}
+
+#endif
+
+const char URLInputSource::asciiStatusCodeElementName[] = "URLInputSourceStatus";
+
+const XMLCh URLInputSource::utf16StatusCodeElementName[] = UNICODE_LITERAL_20(U,R,L,I,n,p,u,t,S,o,u,r,c,e,S,t,a,t,u,s);