示例#1
0
 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));
 }
示例#2
0
        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);
            }
        }