version 1.7, 1998/07/28 05:58:10
|
version 1.8, 1998/08/06 04:28:09
|
Line 65 void rdfWriteMemory(rdfSchema rdf, char
|
Line 65 void rdfWriteMemory(rdfSchema rdf, char
|
*/ |
*/ |
rdfSchema rdfNewSchema() { |
rdfSchema rdfNewSchema() { |
xmlDocPtr res; |
xmlDocPtr res; |
xmlDtdPtr rdf; |
xmlNsPtr rdf; |
|
|
res = xmlNewDoc("1.0"); |
res = xmlNewDoc("1.0"); |
rdf = xmlNewDtd(res, "http://www.w3.org/TR/WD-rdf-syntax#", "RDF"); |
rdf = xmlNewNs(res, "http://www.w3.org/TR/WD-rdf-syntax#", "RDF"); |
res->root = xmlNewNode(rdf, strdup("RDF"), NULL); |
res->root = xmlNewNode(rdf, strdup("RDF"), NULL); |
|
|
return((rdfSchema) res); |
return((rdfSchema) res); |
Line 77 rdfSchema rdfNewSchema() {
|
Line 77 rdfSchema rdfNewSchema() {
|
/* |
/* |
* Adding a new namespace to an RDF schema. |
* Adding a new namespace to an RDF schema. |
*/ |
*/ |
rdfNamespace rdfNewNamespace(rdfSchema rdf, const char *url, const char *ns) { |
rdfNamespace rdfNewNamespace(rdfSchema rdf, const char *url, |
xmlDtdPtr dtd; |
const char *namespace) { |
|
xmlNsPtr ns; |
|
|
dtd = xmlNewDtd(rdf, url, ns); |
ns = xmlNewNs(rdf, url, namespace); |
|
|
return((rdfNamespace) dtd); |
return((rdfNamespace) ns); |
} |
} |
|
|
/* |
/* |
* Get a namespace associated to an RDF schema. |
* Get a namespace associated to an RDF schema. |
*/ |
*/ |
rdfNamespace rdfGetNamespace(rdfSchema rdf, const char *href) { |
rdfNamespace rdfGetNamespace(rdfSchema rdf, const char *href) { |
xmlDtdPtr dtd; |
xmlNsPtr ns; |
|
|
dtd = rdf->dtds; |
ns = rdf->nss; |
while (dtd != NULL) { |
while (ns != NULL) { |
if (!strcmp(dtd->href, href)) |
if (!strcmp(ns->href, href)) |
return((rdfNamespace) dtd); |
return((rdfNamespace) ns); |
dtd = dtd->next; |
ns = ns->next; |
} |
} |
return(NULL); |
return(NULL); |
} |
} |
Line 104 rdfNamespace rdfGetNamespace(rdfSchema r
|
Line 105 rdfNamespace rdfGetNamespace(rdfSchema r
|
* Get the RDF namespace associated to an RDF schema. |
* Get the RDF namespace associated to an RDF schema. |
*/ |
*/ |
rdfNamespace rdfGetRdfNamespace(rdfSchema rdf) { |
rdfNamespace rdfGetRdfNamespace(rdfSchema rdf) { |
xmlDtdPtr dtd; |
xmlNsPtr ns; |
|
|
dtd = rdf->dtds; |
ns = rdf->nss; |
while (dtd != NULL) { |
while (ns != NULL) { |
if (!strcmp(dtd->href, "http://www.w3.org/TR/WD-rdf-syntax#")) |
if (!strcmp(ns->href, "http://www.w3.org/TR/WD-rdf-syntax#")) |
return((rdfNamespace) dtd); |
return((rdfNamespace) ns); |
dtd = dtd->next; |
ns = ns->next; |
} |
} |
/* create it ! */ |
/* create it ! */ |
return(rdfNewNamespace(rdf, "http://www.w3.org/TR/WD-rdf-syntax#", "RDF")); |
return(rdfNewNamespace(rdf, "http://www.w3.org/TR/WD-rdf-syntax#", "RDF")); |
Line 139 rdfDescription rdfFirstDescription(rdfSc
|
Line 140 rdfDescription rdfFirstDescription(rdfSc
|
if (tree == NULL) return(NULL); |
if (tree == NULL) return(NULL); |
tree = tree->childs; |
tree = tree->childs; |
while (tree != NULL) { |
while (tree != NULL) { |
if ((tree->dtd == rdfNs) && (!strcmp(tree->name, "Description"))) |
if ((tree->ns == rdfNs) && (!strcmp(tree->name, "Description"))) |
return(tree); |
return(tree); |
tree = tree->next; |
tree = tree->next; |
} |
} |
Line 151 rdfDescription rdfNextDescription(rdfDes
|
Line 152 rdfDescription rdfNextDescription(rdfDes
|
rdfNamespace rdfNs; |
rdfNamespace rdfNs; |
|
|
if (desc == NULL) return(NULL); |
if (desc == NULL) return(NULL); |
rdfNs = desc->dtd; |
rdfNs = desc->ns; |
desc = desc->next; |
desc = desc->next; |
while (desc != NULL) { |
while (desc != NULL) { |
if ((desc->dtd == rdfNs) && (!strcmp(desc->name, "Description"))) |
if ((desc->ns == rdfNs) && (!strcmp(desc->name, "Description"))) |
return(desc); |
return(desc); |
desc = desc->next; |
desc = desc->next; |
} |
} |
Line 176 rdfDescription rdfAddDescription(rdfSche
|
Line 177 rdfDescription rdfAddDescription(rdfSche
|
} |
} |
if (about != NULL) { |
if (about != NULL) { |
if (oldXMLWDcompatibility) { |
if (oldXMLWDcompatibility) { |
rdfNamespace dtd; |
rdfNamespace ns; |
char *buf; |
char *buf; |
|
|
dtd = rdfGetRdfNamespace(schema); |
ns = rdfGetRdfNamespace(schema); |
buf = (char *) malloc(strlen(dtd->AS) + 10); |
buf = (char *) malloc(strlen(ns->prefix) + 10); |
sprintf(buf, "%s:HREF", dtd->AS); |
sprintf(buf, "%s:HREF", ns->prefix); |
xmlNewProp(tree, buf, about); |
xmlNewProp(tree, buf, about); |
free(buf); |
free(buf); |
} else { |
} else { |
Line 203 char *rdfGetDescriptionId(rdfSchema sche
|
Line 204 char *rdfGetDescriptionId(rdfSchema sche
|
|
|
char *rdfGetDescriptionAbout(rdfSchema schema, rdfDescription desc) { |
char *rdfGetDescriptionAbout(rdfSchema schema, rdfDescription desc) { |
char *res; |
char *res; |
rdfNamespace dtd; |
rdfNamespace ns; |
char *buf; |
char *buf; |
|
|
res = (char *) xmlGetProp(desc, "about"); |
res = (char *) xmlGetProp(desc, "about"); |
Line 212 char *rdfGetDescriptionAbout(rdfSchema s
|
Line 213 char *rdfGetDescriptionAbout(rdfSchema s
|
/* |
/* |
* Maintain compatibility with old "RDF:HREF" |
* Maintain compatibility with old "RDF:HREF" |
*/ |
*/ |
dtd = rdfGetRdfNamespace(schema); |
res = (char *) xmlGetProp(desc, "HREF"); |
buf = (char *) malloc(strlen(dtd->AS) + 10); |
if (res != NULL) return(res); |
sprintf(buf, "%s:HREF", dtd->AS); |
ns = rdfGetRdfNamespace(schema); |
|
buf = (char *) malloc(strlen(ns->prefix) + 10); |
|
sprintf(buf, "%s:HREF", ns->prefix); |
res = (char *) xmlGetProp(desc, buf); |
res = (char *) xmlGetProp(desc, buf); |
free(buf); |
free(buf); |
return(res); |
return(res); |
Line 265 int rdfGetValue(rdfDescription desc, con
|
Line 268 int rdfGetValue(rdfDescription desc, con
|
if (elem != NULL) *elem = NULL; |
if (elem != NULL) *elem = NULL; |
|
|
while (list != NULL) { |
while (list != NULL) { |
if ((list->dtd == ns) && (!strcmp(list->name, property))) { |
if ((list->ns == ns) && (!strcmp(list->name, property))) { |
/* |
/* |
* Found a perfect match, return it ! |
* Found a perfect match, return it ! |
*/ |
*/ |
Line 282 int rdfGetValue(rdfDescription desc, con
|
Line 285 int rdfGetValue(rdfDescription desc, con
|
if (!strcmp(list->name, "Description")) return(RDF_DESC); |
if (!strcmp(list->name, "Description")) return(RDF_DESC); |
return(0); |
return(0); |
} |
} |
else if (((list->dtd == NULL) || (ns == NULL)) && |
else if (((list->ns == NULL) || (ns == NULL)) && |
(!strcmp(list->name, property))) { |
(!strcmp(list->name, property))) { |
/* |
/* |
* If more than one "best" match exists, ignore them ! |
* If more than one "best" match exists, ignore them ! |
Line 327 void rdfSetValue(rdfDescription desc, co
|
Line 330 void rdfSetValue(rdfDescription desc, co
|
* Search the property. |
* Search the property. |
*/ |
*/ |
while (list != NULL) { |
while (list != NULL) { |
if ((list->dtd == ns) && (!strcmp(list->name, property))) { |
if ((list->ns == ns) && (!strcmp(list->name, property))) { |
/* |
/* |
* Property was found, update it ! |
* Property was found, update it ! |
*/ |
*/ |
Line 364 void rdfRemoveProperty(rdfDescription de
|
Line 367 void rdfRemoveProperty(rdfDescription de
|
* Search the property. |
* Search the property. |
*/ |
*/ |
while (list != NULL) { |
while (list != NULL) { |
if ((list->dtd == ns) && (!strcmp(list->name, property))) { |
if ((list->ns == ns) && (!strcmp(list->name, property))) { |
/* |
/* |
* Property was found, delete it ! |
* Property was found, delete it ! |
*/ |
*/ |
Line 446 const char *rdfElemGetPropertyName(rdfEl
|
Line 449 const char *rdfElemGetPropertyName(rdfEl
|
return(elem->name); |
return(elem->name); |
} |
} |
rdfNamespace rdfElemGetNamespace(rdfElement elem) { |
rdfNamespace rdfElemGetNamespace(rdfElement elem) { |
return(elem->dtd); |
return(elem->ns); |
} |
} |
void rdfElemSetValue(rdfElement elem, const char *value) { |
void rdfElemSetValue(rdfElement elem, const char *value) { |
if (elem->childs != NULL) { |
if (elem->childs != NULL) { |