diff --git a/ChangeLog b/ChangeLog index e91e7a1ee..d26152f54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-01-18 12:22-EST Gregory John Casamento + + * Source/NSXMLNode.m: Add code in initWithKind + * Source/NSXMLDTDNode.m: Remove attributes, use libxml2 structures + instead. + * Source/NSXMLPrivate.h: Add define for MY_DTD. + 2012-01-17 19:09-EST Gregory John Casamento * Source/NSXMLNode.m: Add code to create nodes for comments, diff --git a/Source/NSXMLDTDNode.m b/Source/NSXMLDTDNode.m index ad48b9ef5..5bd99e935 100644 --- a/Source/NSXMLDTDNode.m +++ b/Source/NSXMLDTDNode.m @@ -69,9 +69,8 @@ GS_PRIVATE_INTERNAL(NSXMLDTDNode) - (BOOL) isExternal { - if (internal->systemID != nil) + if ([self systemID]) { -// FIXME ... libxml integration? return YES; } return NO; @@ -79,53 +78,37 @@ GS_PRIVATE_INTERNAL(NSXMLDTDNode) - (NSString*) notationName { - if (internal->notationName == nil) - { - [self notImplemented: _cmd]; - } - return internal->notationName; + return StringFromXMLStringPtr(MY_DTD->name); } - (NSString*) publicID { - if (internal->publicID == nil) - { - [self notImplemented: _cmd]; - } - return internal->publicID; + return StringFromXMLStringPtr(MY_DTD->ExternalID); } - (void) setDTDKind: (NSXMLDTDNodeKind)kind { internal->DTDKind = kind; - // FIXME ... libxml integration? } - (void) setNotationName: (NSString*)notationName { - ASSIGNCOPY(internal->notationName, notationName); - // FIXME ... libxml integration? + MY_DTD->name = XMLSTRING(notationName); } - (void) setPublicID: (NSString*)publicID { - ASSIGNCOPY(internal->publicID, publicID); - // FIXME ... libxml integration? + MY_DTD->ExternalID = XMLSTRING(publicID); } - (void) setSystemID: (NSString*)systemID { - ASSIGNCOPY(internal->systemID, systemID); - // FIXME ... libxml integration? + MY_DTD->ExternalID = XMLSTRING(systemID); } - (NSString*) systemID { - if (internal->systemID == nil) - { - [self notImplemented: _cmd]; - } - return internal->systemID; + return StringFromXMLStringPtr(MY_DTD->SystemID); } @end diff --git a/Source/NSXMLNode.m b/Source/NSXMLNode.m index cca7bbb8c..3fd06613e 100644 --- a/Source/NSXMLNode.m +++ b/Source/NSXMLNode.m @@ -629,6 +629,9 @@ NSArray *execute_xpath(NSXMLNode *node, case NSXMLEntityDeclarationKind: case NSXMLElementDeclarationKind: case NSXMLNotationDeclarationKind: + case NSXMLAttributeDeclarationKind: + node = xmlNewNode(NULL, (xmlChar *)""); + ((xmlNodePtr)node)->type = XML_ATTRIBUTE_DECL; theSubclass = [NSXMLDTDNode class]; break; @@ -645,6 +648,14 @@ NSArray *execute_xpath(NSXMLNode *node, node = xmlNewText((xmlChar *)""); break; + case NSXMLNamespaceKind: + node = xmlNewNs(NULL,(xmlChar *)"",(xmlChar *)""); + break; + + case NSXMLAttributeKind: + node = xmlNewProp(NULL,(xmlChar *)"",(xmlChar *)""); + break; + default: break; } diff --git a/Source/NSXMLPrivate.h b/Source/NSXMLPrivate.h index 4e8538644..1e979c444 100644 --- a/Source/NSXMLPrivate.h +++ b/Source/NSXMLPrivate.h @@ -84,6 +84,7 @@ StringFromXMLString(const unsigned char *bytes, unsigned length) #define MY_NODE ((xmlNode *)internal->node) #define MY_ATTR ((xmlAttr *)internal->node) #define MY_ELEM ((xmlElement *)internal->node) +#define MY_DTD ((xmlDtd *)internal->node) /* Instance variables for NSXMLNode. This macro needs to be defined before * the NSXMLNode.h header is imported and before GSInternal.h is imported.