public override Uri ResolveUri(Uri baseUri, string relativeUri) { if (relativeUri.IndexOf("//", StringComparison.Ordinal) > 0 && !new Uri(relativeUri, UriKind.RelativeOrAbsolute).IsAbsoluteUri) { return(UriTools.CreatePublicId(relativeUri)); } return(base.ResolveUri(baseUri, relativeUri)); }
void IXmlNodeProcessor <INode> .ProcessDocumentType(string publicId, string systemId, string internalSubset, bool useAsNamespace, INode baseNode, ref INode defaultNamespace) { INode baseType = null; if (publicId != null) { var publicNode = rdf.CreateUriNode(UriTools.CreatePublicId(publicId)); rdf.HandleTriple(publicNode, label, rdf.CreateLiteralNode(publicId, xpublic)); if (systemId != null) { rdf.HandleTriple(publicNode, isDefinedBy, MakeAbsoluteNode(baseNode, systemId)); } if (useAsNamespace && UseDtdAsDefaultNamespace) { defaultNamespace = defaultNamespace ?? publicNode; } baseType = publicNode; } else if (systemId != null) { var systemNode = MakeAbsoluteNode(baseNode, systemId); baseType = BlankNode("doctype"); rdf.HandleTriple(baseType, isDefinedBy, systemNode); //if(useAsNamespace && UseDtdAsDefaultNamespace) defaultNamespace = defaultNamespace ?? systemNode; } INode subsetType = null; if (!String.IsNullOrWhiteSpace(internalSubset)) { subsetType = rdf.CreateBlankNode("dtd"); rdf.HandleTriple(subsetType, value, rdf.CreateLiteralNode(internalSubset)); if (baseType != null) { rdf.HandleTriple(subsetType, subClassOf, baseType); } baseType = subsetType; } if (baseType != null) { rdf.HandleTriple(baseNode, a, baseType); } }