Re: NSXML and Character References
Re: NSXML and Character References
- Subject: Re: NSXML and Character References
- From: Greg <email@hidden>
- Date: Mon, 21 Nov 2005 09:14:28 -0800
- Thread-topic: NSXML and Character References
The text with that table could be more precise: it lists the five characters
that ever require escaping in XML. Only two, the ampersand and the less than
symbol (& and <, respectively), must always be escaped. The greater than
symbol (>) usually has to be escaped, while apostrophe and quotation mark
(²) only on rare occasions.
Since ITunes uses RSS 2.0, and RSS fully conforms to XML 1.0, Itunes must
accept unescaped apostrophe¹s and quotation marks whenever they do not need
to be escaped. XML is quite exact - ITunes has no discretion here. And
presumably NSXMLNode will escape those two characters at those other times
when escaping them is required.
Greg
On 11/21/05 8:27 AM, "Juan Alvarez" <email@hidden> wrote:
> Yes I know that.. But if you look at the iTunes Podcast
> Specifications page http://phobos.apple.com/static/iTunesRSS.html you
> clearly see at the bottom that the apostrophe and the quotations must
> be escaped in order for the feed to work. I need the xml to be parsed
> that way or else it will not work. Also, I cannot do it manually
> because the NSXML class automatically escapes the ampersand but
> nothing else. Do you know how to get it to escape the other
> characters? Thanks.
>
> On Nov 21, 2005, at 10:50 AM, James Housley wrote:
>
>> On Nov 21, 2005, at 10:26 AM, Juan Alvarez wrote:
>>
>>> Hi,
>>> I am creating an NSXMLDocument and adding the children as
>>> NSXMLNodes. The problem I am having is that the xml being written
>>> out escapes only "&" characters and not apostrophes or quotations.
>>> Why is that? Is there a way to have all the characters escape
>>> properly. I have already tried to replace the characters with the
>>> appropriate escaping, but for some reason the xml still wants to
>>> escape the & character that are in there. Please help. I have
>>> provided sample code below and the ouput:
>>>
>>> Code:
>>> NSXMLElement *root = (NSXMLElement *)[NSXMLNode
>>> elementWithName:@"rss"];
>>>
>>> NSXMLDocument *xmlDoc = [[NSXMLDocument alloc]
>>> initWithRootElement:rootElement];
>>> [xmlDoc setVersion:@"1.0"];
>>> [xmlDoc setCharacterEncoding:@"UTF-8"];
>>>
>>> NSXMLNode *node = [NSXMLNode elementWithName:@"title"];
>>> [node setStringValue:@"My \"Mom\" & \"Dad's\" Show"];
>>>
>>> [root addChild:node];
>>>
>>> NSData *data = [xmlDoc XMLDataWithOptions:NSXMLNodePrettyPrint];
>>> [data writeToFile:filepath atomically:YES];
>>>
>>> Output:
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <rss>
>>> <title>My "Mom" & "Dad's" Show</title>
>>> </rss>
>>>
>>
>> &, < and > are required to always be escaped by the
>> spec. Quotations and apostrophes only are needed in certain
>> instances. In your above example there is no need to escape them
>> and are valid like that. However, they must be escaped in the case
>> below.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <rss>
>> <title>My "Mom" & "Dad's" Show</title>
>> <tag2 attribute="My "Mom" & "Dad's"
>> Show">I is a good show</tag2>
>> <tag3 attribute='My "Mom" & "Dad's" Show'>I is a good
>> show</tag3>
>> </rss>
>>
>> From http://www.w3.org/TR/2004/REC-xml-20040204/#syntax
>>
>> To allow attribute values to contain both single and double quotes,
>> the apostrophe or single-quote character (') may be represented as
>> "'", and the double-quote character (") as """.
>>
>>
>> Jim
>> --
>>
>> /"\ ASCII Ribbon Campaign .
>> \ / - NO HTML/RTF in e-mail .
>> X - NO Word docs in e-mail .
>> / \ -----------------------------------------------------------------
>> email@hidden http://www.FreeBSD.org The Power to Serve
>> email@hidden http://www.TheHousleys.net
>> ---------------------------------------------------------------------
>> Do not meddle in the affairs of dragons, for you are crunchy and taste
>> good with ketchup.
>>
>>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Cocoa-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden