Junod Antoine wrote:
Hello gurus,
I'm a bit into trouble wih buffers and xml parsing. Here is my problem:
I've got a .xhtml with the following lines:
[...] <meta name="course_name" content="G�nie Logiciel" /> <meta name="date" content="23 d�cembre 2005" /> [...] <title>Auction: document d'analyse</title> [...]
I'm trying to store the content of the meta tag in a buffer, one per meta tag, (ie "G�nie Logiciel" in buffer course_name, "23 d�cembre 2005" in buffer date) to use these buffers when I meet the title tag:
\XMLifequalelse{meta}{name}{course_name} {\startbuffer[course_name]\XMLpar{meta}{content}{}\stopbuffer}{} \XMLifequalelse{meta}{name}{date} {\startbuffer[date]\XMLpar{meta}{content}{}\stopbuffer}{} \defineXMLenvironment [title] {\startstandardmakeup \getbuffer[course_name] \getbuffer[date]}{\stopstandardmakeup}
But it does not print anything else than the title.
buffers serve a different purpose and are part if a text flow \starttext \defineXMLsingular [meta] [name=,content=] {\setevariables[document:meta][\XMLop{name}=\XMLop{content}]} \defineXMLenvironment [title] {} {\startstandardmakeup \getvariable{document:meta}{course_name} \endgraf \getvariable{document:meta}{date} \endgraf \stopstandardmakeup} \startXMLdata <meta name="course_name" content="Genie Logiciel" /> <meta name="date" content="23 decembre 2005" /> <title/> \stopXMLdata With a little extension (i'll add it) we can prevent unwanted expansion: \unprotected \def\setvalueXMLpar#1#2#3% {\@EA\let\csname#1\@EA\endcsname \csname\ifcsname\@@XMLvariable:#2:#3\endcsname \@@XMLvariable:#2:#3\else\s!empty\fi\endcsname} \defineXMLsingular [meta] [name=,content=] {\setvalueXMLpar{document:meta:\XMLop{name}}{meta}{content}} \defineXMLenvironment [title] {} {\startstandardmakeup \getvalue{document:meta:course_name} \endgraf \getvalue{document:meta:date} \endgraf \stopstandardmakeup} \startXMLdata <meta name="course_name" content="Genie Logiciel" /> <meta name="date" content="23 decembre 2005" /> <title/> \stopXMLdata \stoptext