From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/113986 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Thangalin via ntg-context Newsgroups: gmane.comp.tex.context Subject: Re: Dynamic document variables from metadata Date: Sun, 2 Jan 2022 11:15:08 -0800 Message-ID: References: <84b1ed66-d8ae-7571-6f0f-7fa099061540@xs4all.nl> Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2155462154524617158==" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17821"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Thangalin To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Sun Jan 02 20:15:55 2022 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n46Kg-0004Ku-ME for gctc-ntg-context-518@m.gmane-mx.org; Sun, 02 Jan 2022 20:15:54 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id D621B2890A6; Sun, 2 Jan 2022 20:15:24 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r9Vy4rdoROX4; Sun, 2 Jan 2022 20:15:22 +0100 (CET) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 80A26286E38; Sun, 2 Jan 2022 20:15:22 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 87819286E38 for ; Sun, 2 Jan 2022 20:15:21 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XZgsxCvrl0WQ for ; Sun, 2 Jan 2022 20:15:20 +0100 (CET) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.167.42; helo=mail-lf1-f42.google.com; envelope-from=thangalin@gmail.com; receiver= Original-Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 467E8283224 for ; Sun, 2 Jan 2022 20:15:20 +0100 (CET) Original-Received: by mail-lf1-f42.google.com with SMTP id o12so71116797lfk.1 for ; Sun, 02 Jan 2022 11:15:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ltQ4YD8fKuZqr6HFBF5pTb1Aj/vk8vaRBim5vyjyn+Q=; b=NkepizNasWIC42N9uUVxqyXSCbUiIoQ+laMApZUFLyrLy5lMFaCEjHQCnvvKeq/46I wDfAQ/Awbak6fsxuuN/myUFAQTaDMkRlqipWctCTZMPTou9ODnDpxPt5iGfte3KHxp6N K1y+ivvef8/U3GDYMKBfCG2DBoV9PCE3v2ugrkNZOo5iquyTr3P3ePmvg1OpFCEyGzEr gV7YOT9kLWn/qmomwjf5p/DR91/164qy8tCThY/e7jxXFuA3JawAUnTRh6e3s2OWA26V RuqTQLIzXYBEdG0QmNpOGi82tqrzeD8Y2mStBcx8qiveyfnKV7twwBT25/WoplupdTY6 DGng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ltQ4YD8fKuZqr6HFBF5pTb1Aj/vk8vaRBim5vyjyn+Q=; b=TgpgGhJNqjdbyKV2r0JON1Sl8hIF+PNWjJLuIBA0EEenqLV8QF9W4smoOUUL7EmkFd kZUomGzdbkdMqqb0cJ3drbRkIRZFqXwb1vWdeu3cKhs0n5jLLYAGNCsq53c+Gf9XFCoN 0+wjbGdOqafn5G7I5n940qODn7/VVCX84MHzX7Yeob9rb71PhFp/ZhD8oOtI95XSVNIi RthlOCyELEGEe+RHj97lRDvih6fUpbA5k7N/0gHTu895Jj7ES59Yscec1qWP3AQg+6Sd gx1LB2vvri/Mv+rxVjwYI9/kigr7mwg/7f3iyf2CaxX3NOq7BZv6y5sV/C+E0ZKzJyLz mqBQ== X-Gm-Message-State: AOAM531raiohPhQoJ3aL9yeJ0tNdm/xMjbxfibuSBm2X4tYiCa6fAY3m EDkT39cH/B3St9EKq5KSfugQD3CHPCnxbtYp15DwYknFvaM= X-Google-Smtp-Source: ABdhPJwJiPjF2YCcmdfvDvQygX61M34IUwHT1uitfgb0rGqXm++6ygjIzFdjl/Mcv3DZwML30i+zkkpNDwJ5RYKAweI= X-Received: by 2002:ac2:484c:: with SMTP id 12mr37126175lfy.511.1641150919248; Sun, 02 Jan 2022 11:15:19 -0800 (PST) In-Reply-To: <84b1ed66-d8ae-7571-6f0f-7fa099061540@xs4all.nl> X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:113986 Archived-At: --===============2155462154524617158== Content-Type: multipart/alternative; boundary="000000000000908dca05d49e39b6" --000000000000908dca05d49e39b6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you, Hans. Updates are in place: https://github.com/DaveJarvis/keenwrite/releases https://github.com/DaveJarvis/keenwrite-themes/releases On Sun, Jan 2, 2022 at 3:11 AM Hans Hagen wrote: > On 1/2/2022 2:54 AM, Thangalin via ntg-context wrote: > > Happy New Year! > > > > How would you implement a mechanism that takes arbitrary XHTML > > tags and produces document variables? Consider: > > > > > > > > After running XML setups, the following would write "Nature": > > > > \documentvariable{journal} > > > > The tricky part is doing this without pre-defining them. Here's a short= , > > self-contained example to help demonstrate: > > > > |\startbuffer[xdoc] > name=3D"author"/> > > \stopbuffer \startxmlsetups xml:xhtml > > \xmlsetsetup{\xmldocument}{*}{-} > > \xmlsetsetup{\xmldocument}{html|body}{xml:*} > > \xmlsetsetup{\xmldocument}{head}{xml:meta} \stopxmlsetups > > \xmlregistersetup{xml:xhtml} \startxmlsetups xml:html > > % "author" is a special setup, not generalized > > \xmlfilter{#1}{/head/meta[@name=3D'author']/command(xml:author)} % What > > goes here to make this dynamic? > > %\xmlfilter{#1}{/head/meta[@name=3D'journal']/command(xml:journal)} > > \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:author > > \setupdocument[author=3D{\xmlatt{#1}{content}}] > > \setupdocument[metadata:author=3D{\xmlatt{#1}{content}}] > > \setupinteraction[author=3D{\documentvariable{author}}] \stopxmlsetups = % > > How can this be generalized? %\startxmlsetups xml:journal > > %\setupdocument[journal=3D{\xmlatt{#1}{content}}] %\stopxmlsetups > > \startxmlsetups xml:body \startdocument Author: > > \documentvariable{author} \par Journal: \documentvariable{journal} > > \stopdocument \stopxmlsetups \xmlprocessbuffer{main}{xdoc}{}| > \startxmlsetups xml:setdocumentvariable > \setupdocument[\xmlatt{#1}{name}=3D{\xmlatt{#1}{content}}] > \stopxmlsetups > > \startxmlsetups xml:author > \setupdocument[author=3D{\xmlatt{#1}{content}}] > \setupdocument[metadata:author=3D{\xmlatt{#1}{content}}] > \setupinteraction[author=3D{\documentvariable{author}}] > \stopxmlsetups > > \startxmlsetups xml:html > \xmlfilter{#1}{/head/meta/command(xml:setdocumentvariable)} > \xmlfilter{#1}{/head/meta[@name=3D'author']/command(xml:author)} > \startdocument > \xmlflush{#1} > \stopdocument > \stopxmlsetups > > > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > ----------------------------------------------------------------- > --000000000000908dca05d49e39b6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thank you, Hans.

Updates are= in place:

https://github.com/DaveJarvis/keenwrite-themes/releases
On Su= n, Jan 2, 2022 at 3:11 AM Hans Hagen <j.hagen@xs4all.nl> wrote:
On 1/2/2022 2:54 AM, Thangalin via ntg-context wrote: > Happy New Year!
>
> How would you implement a mechanism that takes arbitrary XHTML <met= a>
> tags and produces document variables? Consider:
>
>=C2=A0 =C2=A0=C2=A0=C2=A0 <meta name=3D"journal" content= =3D"Nature" />
>
> After running XML setups, the following would write "Nature"= :
>
>=C2=A0 =C2=A0=C2=A0=C2=A0 \documentvariable{journal}
>
> The tricky part is doing this without pre-defining them. Here's a = short,
> self-contained example to help demonstrate:
>
> |\startbuffer[xdoc] <html> <head> <meta content=3D"= ;Milena Mari=C4=87 Einstein"
> name=3D"author"/> <meta content=3D"Annalen der Ph= ysik" name=3D"journal"/>
> </head> <body> </body> </html> \stopbuffer \st= artxmlsetups xml:xhtml
> \xmlsetsetup{\xmldocument}{*}{-}
> \xmlsetsetup{\xmldocument}{html|body}{xml:*}
> \xmlsetsetup{\xmldocument}{head}{xml:meta} \stopxmlsetups
> \xmlregistersetup{xml:xhtml} \startxmlsetups xml:html
> % "author" is a special setup, not generalized
> \xmlfilter{#1}{/head/meta[@name=3D'author']/command(xml:author= )} % What
> goes here to make this dynamic?
> %\xmlfilter{#1}{/head/meta[@name=3D'journal']/command(xml:jour= nal)}
> \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:author
> \setupdocument[author=3D{\xmlatt{#1}{content}}]
> \setupdocument[metadata:author=3D{\xmlatt{#1}{content}}]
> \setupinteraction[author=3D{\documentvariable{author}}] \stopxmlsetups= %
> How can this be generalized? %\startxmlsetups xml:journal
> %\setupdocument[journal=3D{\xmlatt{#1}{content}}] %\stopxmlsetups
> \startxmlsetups xml:body \startdocument Author:
> \documentvariable{author} \par Journal: \documentvariable{journal} > \stopdocument \stopxmlsetups \xmlprocessbuffer{main}{xdoc}{}|
\startxmlsetups xml:setdocumentvariable
=C2=A0 =C2=A0\setupdocument[\xmlatt{#1}{name}=3D{\xmlatt{#1}{content}}]
\stopxmlsetups

\startxmlsetups xml:author
=C2=A0 =C2=A0\setupdocument[author=3D{\xmlatt{#1}{content}}]
=C2=A0 =C2=A0\setupdocument[metadata:author=3D{\xmlatt{#1}{content}}]
=C2=A0 =C2=A0\setupinteraction[author=3D{\documentvariable{author}}]
\stopxmlsetups

\startxmlsetups xml:html
=C2=A0 =C2=A0\xmlfilter{#1}{/head/meta/command(xml:setdocumentvariable)} =C2=A0 =C2=A0\xmlfilter{#1}{/head/meta[@name=3D'author']/command(xm= l:author)}
=C2=A0 =C2=A0\startdocument
=C2=A0 =C2=A0\xmlflush{#1}
=C2=A0 =C2=A0\stopdocument
\stopxmlsetups



-----------------------------------------------------------------
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0Hans Hagen | PRAGMA ADE
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Ridderstraat 27 | 80= 61 GH Hasselt | The Netherlands
=C2=A0 =C2=A0 =C2=A0 =C2=A0 tel: 038 477 53 69 | www.pragma-ade.nl | www.= pragma-pod.nl
-----------------------------------------------------------------
--000000000000908dca05d49e39b6-- --===============2155462154524617158== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --===============2155462154524617158==--