From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/73196 Path: news.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: xml attribute conditional Date: Wed, 14 Dec 2011 22:53:55 +0100 Message-ID: <4EE91AF3.3010402@wxs.nl> References: <4EE71BE1.9020405@wxs.nl> <4EE7E7B1.2060907@wxs.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1323899689 7610 80.91.229.12 (14 Dec 2011 21:54:49 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 14 Dec 2011 21:54:49 +0000 (UTC) Cc: mailing list for ConTeXt users To: Jon Crump Original-X-From: ntg-context-bounces@ntg.nl Wed Dec 14 22:54:44 2011 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from balder.ntg.nl ([195.12.62.10]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Rawmi-0003DO-Oj for gctc-ntg-context-518@m.gmane.org; Wed, 14 Dec 2011 22:54:44 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 38AFACB170; Wed, 14 Dec 2011 22:54:43 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id yjNdZyLEaQSY; Wed, 14 Dec 2011 22:54:31 +0100 (CET) Original-Received: from balder.ntg.nl (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 8EB59CB169; Wed, 14 Dec 2011 22:54:31 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id B5F95CB169 for ; Wed, 14 Dec 2011 22:54:30 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id h6qN+rcn4vFx for ; Wed, 14 Dec 2011 22:54:28 +0100 (CET) Original-Received: from filter2-ams.mf.surf.net (filter2-ams.mf.surf.net [192.87.102.70]) by balder.ntg.nl (Postfix) with ESMTP id 5DF14CABBD for ; Wed, 14 Dec 2011 22:54:28 +0100 (CET) Original-Received: from smtp.ziggozakelijk.nl (D57D1DA2.static.ziggozakelijk.nl [213.125.29.162]) by filter2-ams.mf.surf.net (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id pBELsRKd027728 for ; Wed, 14 Dec 2011 22:54:27 +0100 X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=10.100.1.101; Original-Received: from [10.100.1.101] (unverified [10.100.1.101]) by pragma-net.nl (SurgeMail 5.3h2) with ESMTP (TLS) id 3014-1713362 for multiple; Wed, 14 Dec 2011 22:54:25 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20111105 Thunderbird/8.0 In-Reply-To: X-Authenticated-User: hagen@controller-9 X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN) X-CanIt-Geo: ip=213.125.29.162; country=NL; region=11; city=Den Haag; latitude=52.0833; longitude=4.3000; http://maps.google.com/maps?q=52.0833,4.3000&z=6 X-CanItPRO-Stream: uu:ntg-context@ntg.nl (inherits from uu:default, base:default) X-Canit-Stats-ID: 0rG99Sr6o - 73d0e3609693 - 20111214 X-Scanned-By: CanIt (www . roaringpenguin . com) on 192.87.102.70 X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.12 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl Xref: news.gmane.org gmane.comp.tex.context:73196 Archived-At: On 14-12-2011 19:33, Jon Crump wrote: >>> @xml:id==string.sub('#N020-18', 2) -> >>> (ll.at and ll.at['xml:id'])==string.sub('#N020-18', 2) ! Missing >>> number, treated as zero. >> >> >> lua error with sub .. not sure what you want t o test here >> >> indeed an error will prevent the multipass file to be saved (feature) >> >> >> Hans > > Thanks Hans, It's good to know the --result problem is not a bug, but > a feature. My problem then arises from my use of \note as opposed to > \footnote. In processing a tag in the xml, I need to test if the > current ref node has an ancestor
with attribute: > @xml:id='apr_engl'. If it does, I need to create a \footnote whose > text comes from a element with attribute xml:id='N020-18', if > it does not, I need to create a \note whose reference number > corresponds to the one created by \footnote and thus points to the > same footnote contents: > >
> <...> > referenced text > <...> >
>
> <...> > referenced text > <...> >
> .... > footnote contents > > To result in: > > arabic text (1) > english text (1) > (1) footnote content > > Currently I'm getting: > > arabic text ?? > english text (1) > (1) footnote content > > Document order problem maybe? probably a too complex solution ... this is an alternative: \startbuffer[test]
a a a a
b b b b
ONE TWO
\stopbuffer \startxmlsetups xml:somesetups \xmlsetsetup{#1}{text|div|ref|note}{xml:*} \xmlsetsetup{#1}{div[@type='a']}{xml:div:a} \xmlsetsetup{#1}{div[@type='b']}{xml:div:b} \xmlsetsetup{#1}{div[@type='c']}{xml:div:c} \stopxmlsetups \xmlregistersetup{xml:somesetups} \startluacode function document.preprocess() local notes = { } for e in lxml.collected("main","note") do notes[e.at["xml:id"]] = 0 end for e in lxml.collected("main","ref") do local target = e.at["target"] if target then local id = string.gsub(target,"^#","") local n = notes[id] if n then n = n + 1 e.at.footnote = n notes[id] = n e.at["xml:id"] = id end end end end \stopluacode \startxmlsetups xml:text \ctxlua{document.preprocess()} \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:div:a \par[div a]\par \xmlflush{#1} \par[div a]\par \stopxmlsetups \startxmlsetups xml:div:b \par[div b]\par \xmlflush{#1} \par[div b]\par \stopxmlsetups % \startxmlsetups xml:div:c % \par[div c]\par % \xmlflush{#1} % \par[div c]\par % \stopxmlsetups % % \startxmlsetups xml:note % [note \footnote[\letterhash\xmlatt{#1}{xml:id}]{\xmlflush{#1}}] % \stopxmlsetups % % \startxmlsetups xml:ref % [ref : \note[\xmlatt{#1}{target}] ] % \stopxmlsetups \startxmlsetups xml:div:c \stopxmlsetups \startxmlsetups xml:note \stopxmlsetups \startxmlsetups xml:ref \doifsomething{\xmlatt{#1}{footnote}} { \doifelse{\xmlatt{#1}{footnote}} {1} { [footnote \footnote[\xmlatt{#1}{xml:id}]{\xmlflush{#1}}] } { [note \note[\xmlatt{#1}{xml:id}]{\xmlflush{#1}}] } } \stopxmlsetups \starttext \xmlprocessbuffer{main}{test}{} \stoptext (if it works ... wikify it) ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________