PNLP & get Attributes; was [Ann] MTML Pull-Parser Data Table

Mark Brownell gizmotron at earthlink.net
Tue Mar 23 15:21:37 EST 2004


On Tuesday, March 23, 2004, at 09:21  AM, Mark Brownell wrote:

> -- put PNLPgetAttribute("name", tZap) into theAttribute
> function PNLPgetAttribute tAttribute, strngToSearch
>
> strngToSearch should be parsed from an element tag set ("<bob", 
> "</bob>", tZap) first in order to parse that element's attributes. 
> (Note: "<bob" is missing the ">" on the start tag. This is to allow 
> for the attributes to follow.) In other words it's only a pull-parser 
> for attributes after it is separated out from its element as the new 
> strngToSearch. This is probably another case of bad explanations or 
> comments in my code. On the other hand it could be broken. I just put 
> up an example using the element version:
> -- put PNLPgetElement("<record>", "</record>", tZap) into theElement
> function PNLPgetElement tStTag, tEdTag, stngToSch
> to make an XML table. I should have explained that parsing attributes 
> is a two step process.
>
> Thanks for showing me this Wouter.
>
> Mark

This is the latest that works, and thanks to Wouter it also fixes 
attributes that begin different but end the same. I forgot about space 
and SGML requirements.
Example tag set: <BODY TEXT="#000000" BGCOLOR="#F8D0B8" LINK="#999999" 
VLINK="#000000" ALINK="#FF0000">blab here website</BODY>

New:
-- put PNLPgetAttribute("name", tElementFound) into theAttribute
function PNLPgetAttribute tAttribute, strngToSearch
   put empty into zapA
   put quote into Qx
   if char 1 of tAttribute = space then
     put tAttribute & "=" & Qx into tAttributeX
   else
     put space & tAttribute & "=" & Qx into tAttributeX
   end if
   put the number of chars in tAttributeX into dChars
   put offset(tAttributeX,strngToSearch) into tNum1
   if tNum1 < 1 then
     return "error"
     exit PNLPgetAttribute
   end if
   put tNum1 + dChars into tNumX
   put offset(Qx,strngToSearch,tNumX) into tNumZ
   if tNumX < 1 then
     return "error"
     exit PNLPgetAttribute
   end if
   if tNumZ < 1 then
     return "error"
     exit PNLPgetAttribute
   end if
   put char tNumX to (tNumX + (tNumZ - 1)) of strngToSearch into zapA
   return zapA
end PNLPgetAttribute

Mark



More information about the use-livecode mailing list