Formatting in XML?
Ken Ray
kray at sonsothunder.com
Sat Feb 5 12:42:34 EST 2005
On 2/5/05 9:23 AM, "Terry Vogelaar (de Mare)" <tvogelaar at de-mare.nl>
wrote:
> Op 5-feb-05 om 7:38 heeft Ken Ray het volgende geschreven:
>
>> On 2/5/05 12:19 AM, "Terry Vogelaar (de Mare)" <tvogelaar at de-mare.nl>
>> wrote:
>>
>>> <Card>
>>> <Header>This fantastic card</Header>
>>> <Content>
>>> <Red>This</Red> needs to be displayed
>>> <italic>formatted</italic>
>>> just like <bold>HTML</bold>; it should be in
>>> <italic>one</italic> field.
>>> </Content>
>>> </Card>
>>>
>>> If I try revXMLNodeContents(id,"/Card/Content"), the function returns
>>> empty. No "xmlerr", not even " needs to be displayed just like ; it
>>> should be in field." Not that I want any of those...
>>>
>>> How do I get what I want?
>>
>> Terry, the problem is that you have tags within tags... the <Red> tag
>> is a
>> node just like <Content>. What you need is a CDATA tag that will let
>> you
>> store formatted data inside of a node, like:
>>
>> <Content>
>> <![CDATA[<Red>This</Red> needs to be displayed
>> <italic>formatted</italic>
>> just like <bold>HTML</bold>; it should be in <italic>one</italic>
>> field.]]>
>> </Content>
>>
>> Any data inside the <![CDATA[ ... ]]> structure is not parsed by the
>> interpreter; it's kind of like HTML's <pre> tag. you can use the
>> 'revXMLNodeContents' to retrieve the CDATA tag, so:
>>
>> put revXMLNodeContents(id,"/Content")
>>
>> for my chunk above would return:
>>
>> <Red>This</Red> needs to be displayed <italic>formatted</italic> just
>> like <bold>HTML</bold>; it should be in <italic>one</italic> field.
>
> Thanks, Ken, that was very helpful.
>
> Of course I actually wanted to have "This" displayed in red instead of
> between visible tags. But I can replace the <bold> with <b> etc to have
> normal HTML tags, so I can set the HTMLtext of the field to the content
> of 'Content'.
>
> Next question:
> How do I set the content of a node to the <![CDATA[ ... ]]> structure?
> In my attempts it replaces the < and > to < and >. Should I just
> use the 'replace' function or is there a smarter way?
I think that's the only way at the moment... personally, this looks like a
bug to me - the DLL should recognize the CDATA tag prefix.
Ken Ray
Sons of Thunder Software
Web site: http://www.sonsothunder.com/
Email: kray at sonsothunder.com
More information about the use-livecode
mailing list