* Source/NSXMLDTDNode.m: Correct node type, at least for entity nodes.

* Source/NSXMLDTD.m: Use predefined entities from libxml2.
* Source/NSXMLNode.m: Rewrite the ownership transfer to preserve
names in dictionaries.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34947 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2012-03-18 12:20:29 +00:00
parent d3e3f4e17c
commit c5e877513e
4 changed files with 88 additions and 62 deletions

View file

@ -35,54 +35,8 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
+ (NSXMLDTDNode*) predefinedEntityDeclarationForName: (NSString*)name
{
// FIXME: We should cache these instances
if ([name isEqualToString: @"lt"])
{
NSXMLDTDNode *node;
node = [[NSXMLDTDNode alloc] initWithKind: NSXMLEntityDeclarationKind];
[node setName: @"lt"];
[node setStringValue: @"<"];
return AUTORELEASE(node);
}
if ([name isEqualToString: @"gt"])
{
NSXMLDTDNode *node;
node = [[NSXMLDTDNode alloc] initWithKind: NSXMLEntityDeclarationKind];
[node setName: @"gt"];
[node setStringValue: @">"];
return AUTORELEASE(node);
}
if ([name isEqualToString: @"amp"])
{
NSXMLDTDNode *node;
node = [[NSXMLDTDNode alloc] initWithKind: NSXMLEntityDeclarationKind];
[node setName: @"amp"];
[node setStringValue: @"&"];
return AUTORELEASE(node);
}
if ([name isEqualToString: @"quot"])
{
NSXMLDTDNode *node;
node = [[NSXMLDTDNode alloc] initWithKind: NSXMLEntityDeclarationKind];
[node setName: @"qout"];
[node setStringValue: @"\""];
return AUTORELEASE(node);
}
if ([name isEqualToString: @"apos"])
{
NSXMLDTDNode *node;
node = [[NSXMLDTDNode alloc] initWithKind: NSXMLEntityDeclarationKind];
[node setName: @"apos"];
[node setStringValue: @"'"];
return AUTORELEASE(node);
}
return nil;
xmlEntityPtr node = xmlGetPredefinedEntity(XMLSTRING(name));
return (NSXMLDTDNode*)[self _objectForNode: (xmlNodePtr)node];
}
- (void) dealloc
@ -159,7 +113,7 @@ GS_PRIVATE_INTERNAL(NSXMLDTD)
- (NSXMLDTDNode*) entityDeclarationForName: (NSString*)name
{
//xmlGetEntityFromDtd
//xmlGetEntityFromDtd
xmlDtdPtr node = internal->node;
xmlNodePtr children = NULL;
const xmlChar *xmlName = XMLSTRING(name);