From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HTML_MESSAGE,MAILING_LIST_MULTI,URIBL_SBL_A autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 4099 invoked from network); 25 Aug 2023 08:18:49 -0000 Received: from cgl.ntg.nl (5.39.185.202) by inbox.vuxu.org with ESMTPUTF8; 25 Aug 2023 08:18:49 -0000 Received: from localhost (localhost [127.0.0.1]) by cgl.ntg.nl (Postfix) with ESMTP id 3E0BE482D4A for ; Fri, 25 Aug 2023 10:17:34 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at cgl.ntg.nl Received: from cgl.ntg.nl ([127.0.0.1]) by localhost (cgl.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ksUmiIz0Yvt3 for ; Fri, 25 Aug 2023 10:17:33 +0200 (CEST) Received: from cgl.ntg.nl (localhost [127.0.0.1]) by cgl.ntg.nl (Postfix) with ESMTP id 2F75B482DFE for ; Fri, 25 Aug 2023 10:16:46 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by cgl.ntg.nl (Postfix) with ESMTP id B80734828B7 for ; Fri, 25 Aug 2023 10:16:18 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at cgl.ntg.nl Received: from cgl.ntg.nl ([127.0.0.1]) by localhost (cgl.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zI85jYfMXLnR for ; Fri, 25 Aug 2023 10:16:18 +0200 (CEST) Received: from CHE01-GV0-obe.outbound.protection.outlook.com (mail-gv0che01on2134.outbound.protection.outlook.com [40.107.23.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by cgl.ntg.nl (Postfix) with ESMTPS id 00C794828A3 for ; Fri, 25 Aug 2023 10:16:17 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YMYjoaJkcVWza87aHxVUm423KPgYOFAz5sCCfJlfmAbhveLFoh9eQGkFVtrc257hCYRJwZEkAl+IoDNVPCFcrUwfY9hclQFOVzGikZR4qMh8GcwKEvwLnWVc+BqMRiBZ8BQR5geqYMuFo3duffO9260cgw1/whY8f8haCevygmSL433pgJz0f0w3Uhsl+2Aa7g5NZxdY4i8MSgqPw3UK++JoAz2macGRqJOWD+ujJhH9tQ9+Xs+RitHsvlEC/FtvK7uM/m2T8qyTNiFU/DN6gIuahDkTAXLBkjUXOydPXwPN8ywF0dIcbKAKctvPBYb4YSqY/O6beRxIr6GmboeuRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9VZdqiKmDACBd3EbWEcR4wnkgaYmemQvpc27NCmYYqU=; b=YcArRx3RafjykpOLrka81Fi1XDo5t/FKV767kjp6OCUMOmJgrngxU/Wx2qSVfT/1Af7npBX4mgQUZh03iORrXYoEJ2mZZRpv3/X4kTn0K/J3riiw02PR5HChLYooIEV9pBD+VGE5FNte521bk6idcj39ESwQKkKCBHZxyW0AkvB2ZsAQh9B8ezr36EHJmknbJMfhOIbNKWfhULTaxienGvImmev7I8ADzSBHl69LaMGjiU8c0982J0yMXgAwxXaYb3JUX9qSf3WMRTnUDx5rYXfD0MnPK46IEwYKUyLBKlsMmvaTv+vmZcCL0XVe/8gApEfdwuZwn6MaL9kIxiybKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=unibe.ch; dmarc=pass action=none header.from=unibe.ch; dkim=pass header.d=unibe.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unibe.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9VZdqiKmDACBd3EbWEcR4wnkgaYmemQvpc27NCmYYqU=; b=EOgIgeo6nQyBrbwIamVnmJcgMUNI0V0jy68b/ihFetVyFgGFkgH73Kl3IKIhfGezHj2cRAcgVooQPTChQTujN7WHJDtB/BGbySWrJHR3M0hUkI50bxjreBouBaPfDdBTdMqviPnGeQR5ev07w3Oz+PUf74KsYFznx3RKdzaTNZUI8CFRG5/Rm7yZY+ppQjhFTfdZ4YsHgP/2gu/wkq6CRlV3oXkDJBCTZPBy47xdvYNDAV3PL4mSsvv6wD7YZX72DDhox7/9pVyXSqK1AUhiyZafbmJjRuoZGfi0lARysyP5hcKsXpvxyA3BxX+ZUFGep3Fa3/ct0miPNXFUzuGJbA== Received: from ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:2e::8) by GV0P278MB0036.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:1d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.30; Fri, 25 Aug 2023 08:16:16 +0000 Received: from ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM ([fe80::e676:cca3:8123:9797]) by ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM ([fe80::e676:cca3:8123:9797%2]) with mapi id 15.20.6699.028; Fri, 25 Aug 2023 08:16:16 +0000 From: To: Thread-Topic: XML: Correct usage of hash symbol in url Thread-Index: AdnXKx6sKK9bwkv2TxS3MWxE+iKn9A== Date: Fri, 25 Aug 2023 08:16:16 +0000 Message-ID: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=unibe.ch; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: ZRAP278MB0495:EE_|GV0P278MB0036:EE_ x-ms-office365-filtering-correlation-id: a081d1a0-b136-438e-a21f-08dba5438dd0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: z7UKsTwUMi3sbsOCtgMhUK6tCr30TSvUrE2pl/hZAX8i4IHggreeIHQ64+YdjsMUtoP1moVVbmqK1C6YmhbQOzmZttpD5jsZPXKZsVS4M2b4lvtSKcyLbH0a92R+MD1W6GGQzKPX1zS9VsKXF3AoSeQyucT80bVjv8TMqKsWoaDdhaiuGGWScwjeA09ilYcBBIHIH3Q1tOZ5HxqEwQWqUZG+ktNWDRo+R2OFEeLtXRaM44EC0I5thKwCUkpN6mt9IX9yNKIP+VXkWBpvVCfFcu7fQlwMFYFiahdVGtBHg3wirmrUdd7RNBlx2GKRW3I35uqiPcVKwoXkJzw0RP7c9ZRxBFxLXIxaoVDsMgJ9SjZy2r7a/uO73NKBr2ShZyH7qZhuMCzw/0nBo0GbW88Bxd1yOpD2P07uTGpvYyy0mAMmONEO120eS7mL8r4i+UMqpbCDuWQfvAskXRkG8bwyBjYUMOvUCxkgP4kgoOQWQbh3rqDKVZK9GNi2jGkHt5fOGicLtp+zwlbuOcRGV3P5ZaANF4/KlXQJ63Zfj6sLoS4j1RIXrauPF8ku+UO7ij0wksgaOOBvo5CJE3kVkOQ27nJt9epsEo4XHtN14umI0rrC715SpvIyyUhRKg4LcQWK x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(366004)(396003)(39860400002)(346002)(451199024)(186009)(1800799009)(41300700001)(9686003)(8676002)(52536014)(8936002)(55016003)(5660300002)(33656002)(66899024)(38070700005)(38100700002)(122000001)(478600001)(71200400001)(2906002)(6506007)(86362001)(316002)(786003)(66946007)(76116006)(7696005)(6916009)(66476007)(66446008)(66556008)(64756008)(554374003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?PDsVy2FwK8b9+b2JR3vG9Vb0Ka6ULH2SqmHO2SD3wGJQ7Ee3DiglnAqv3A/N?= =?us-ascii?Q?0jjp9PHmoUhpbpLQDIvHWV6XsGz5trLKQdGuoEYxTIvJWdk3hhwyVcKJotKJ?= =?us-ascii?Q?RGiFzgt1PgmrQgbPgSBy/t/wO97yq++9e3dkb8QvJXePtvHk0g3cF9V9BcmN?= =?us-ascii?Q?bnlloqrNlBn5VEZXyYOG4WphxFBY0h51PrXyaGq15bOoty89VJE6p8I4JT40?= =?us-ascii?Q?DDCBcgVpeHmnyfxJvbP56ZZ9bYwKqn6um4ryfaRVu9j6G+KpOtqLZxNLU1ZW?= =?us-ascii?Q?CcsFFxhVZrdadI6NkOJGSYOXE/9Kjs7lTS3Jt63SVr1IAV6PajBACILPs0Dg?= =?us-ascii?Q?hnr/6WUyt7EL7c9QP9/1EZkJVP/7EbT5Fmq0tRzbQcNKR3rJD2OdeghWRjHi?= =?us-ascii?Q?TK1Mrq/rKbXfKD+mq0Kj0vA5mwfMOlNFMxgz9qjS6G8vNQ9u85sXRAGmjq77?= =?us-ascii?Q?zHGV5aWj6kCmScAR82mdOigAmsywfZlJRzxqm/O4ZvLmvbTrynbT6s9x3SHO?= =?us-ascii?Q?PYZ/EoovGNKCdttfp7UDpbUxU3//9F1IvFWVNPFXYAithAbBC9evWSstTsp7?= =?us-ascii?Q?maa1fgxYmTzQWJa7INXdoSVihRjoLy7m12H5t6tKOa/sM5+jItWMn/lLNEOw?= =?us-ascii?Q?FLmrqDWPEpaiboSpUnWKk3raVWpsrsIhfjFluXfPmIHpJ9RCGdYoA4reD/0E?= =?us-ascii?Q?WHagbDwr6HMx76VqOsBsg56/NpoIkTbV5qwjDlVEPlL8nAF+yDZ9or251Ntf?= =?us-ascii?Q?eeBxQ/0MMvzC054XjtIjl5zGnNcyr7nn1uOfD1v2b7VTLCRcDybKVBblyXZy?= =?us-ascii?Q?Xfp3RP84PUodX8kcFcR95ivHbIzPd1g/J6qWGsIxs04Mx5Lpt7b/J2e1VEID?= =?us-ascii?Q?pxh3X6lxun5C4shMLMLiLIKwWaOOOThT4c4yGy+ndbDl8uElJfmd3b+cW3ch?= =?us-ascii?Q?J6RVYmm4AH6xWqS372qyNq/2/WKzNqy+Z+uDCIHELLwnzCitL0p6Wg3TYb0W?= =?us-ascii?Q?j3SiBMKN2WxoQVwA4XguNBFnqYEyX7ZlfBKE9ozE8yiTknR27P8X4jMbehI5?= =?us-ascii?Q?4VreR6R9/J9layKgvrd6Z+oigm9XF1sV15teUOnapQisvADRrSd5XOcSrwa4?= =?us-ascii?Q?E4jaJCZcDKG+IgMebWFE+mVLRRW1qPO2NCVkmeESj3+9qmwhX38io9qrwuGw?= =?us-ascii?Q?zmCoyQ0q1nuHKsMjVD49CrF9KjOaq8zEWXgO7jMCng8mcvJPwIjQtfa7C8hF?= =?us-ascii?Q?G0iiSovPLk723+HkysC+kMyxteZ7PzTBJcH10cr0ZqeuakW75Hfd+3dCGnoa?= =?us-ascii?Q?CJZSbmVWEGJMTW7zeFjcRxLvnajsEQAyFgkNk0wGoxCtL2e05Cg+/iCNS2f6?= =?us-ascii?Q?MrwYMSNmx6pUrvkoSziCeRUegfu3dc0l/o7erMqJ3nm/Q6UExH/pvQhT3ZmC?= =?us-ascii?Q?GQtSHCWDsbWZ2ezEnCSSqrT06mXsWGmXwKHIeztrLyZ3FBm6fanCdZCphmVm?= =?us-ascii?Q?YC7UZZX0cWRS2Xgqkc8/cdp2lqAt/5Qjv5fNCmk5oSK1wYbWLwO+jm9Vc3pr?= =?us-ascii?Q?nQf0BjA1xY/YUTSJ4j7EyTI5C6qGi3EgV1jwpXKfjufTthVNXuiPxiVn+KcI?= =?us-ascii?Q?3XPhhAUx+9uy2t8xM6EzODya7Hy1w5Vb/koogXdHe0FY?= MIME-Version: 1.0 X-OriginatorOrg: unibe.ch X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: a081d1a0-b136-438e-a21f-08dba5438dd0 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2023 08:16:16.1063 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d400387a-212f-43ea-ac7f-77aa12d7977e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7jQrHKtbfRIq0Us2wiCfqpTfwz+crt08ITNZQGrWAJMXPY7kHKmfku/EvOjHvvrIcRMvyeqyxildd7sEuAf4jw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB0036 Message-ID-Hash: BU75V6TUZ353GC7DXJ5RW5BI4IWW4FXH X-Message-ID-Hash: BU75V6TUZ353GC7DXJ5RW5BI4IWW4FXH X-MailFrom: denis.maier@unibe.ch X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list Reply-To: mailing list for ConTeXt users Subject: [NTG-context] XML: Correct usage of hash symbol in url List-Id: mailing list for ConTeXt users Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: multipart/mixed; boundary="===============6202524926641959064==" --===============6202524926641959064== Content-Language: de-DE Content-Type: multipart/alternative; boundary="_000_ZRAP278MB0495250B92D776D9493C540C83E3AZRAP278MB0495CHEP_" --_000_ZRAP278MB0495250B92D776D9493C540C83E3AZRAP278MB0495CHEP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, I need to process URLs in XML documents differently depending on the target= . Thanks to Hans and Thomas I can now deal with the attributes. Now I need to prefix certain kind of targets with a certain URL (a web view= er for IIIF images in this particular case). The prefix contains a #, which= , as a special character seems to cause an error. Adding a double hash seem= s to work, but those ## will end up in the link URL. How can I properly esc= ape a single #? I've already tried using \Ux{23}, but that won't work eithe= r. Best, Denis \setupinteraction[state=3Dstart] \startxmlsetups xml:test \xmlsetsetup{#1}{*}{-} \xmlsetsetup{#1}{doc|element}{xml:*} \stopxmlsetups \xmlregisterdocumentsetup{test}{xml:test} \startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups \startluacode function xml.finalizers.tex.url(e,a) local u =3D #e > 0 and e[1].at[a] local s =3D u and lpeg.match(lpeg.patterns.urlunescaper,u) context(s) end \stopluacode \startxmlsetups xml:element \xmldoifelse{#1}{.[@href and contains(@href,'https://iiif.ub.unibe.ch')]} {\goto{\xmlflush{#1}}[url(https://uv-v4.netlify.app/##?mani= fest=3D\xmlatt{#1}{href})]} % gives me two hashes in the Link %{\goto{\xmlflush{#1}}[url(https://uv-v4.netlify.app/#?mani= fest=3D\xmlatt{#1}{xlink:href})]} \par % does not work {\goto{\xmlflush{#1}}[url(\xmlatt{#1}{href})]} \stopxmlsetups \startbuffer[test] IIIF-Link Other Link \stopbuffer \starttext \xmlprocessbuffer{test}{test}{} \stoptext --_000_ZRAP278MB0495250B92D776D9493C540C83E3AZRAP278MB0495CHEP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi,

 

I need to process URLs in XML d= ocuments differently depending on the target. Thanks to Hans and Thomas I c= an now deal with the attributes.

Now I need to prefix certain ki= nd of targets with a certain URL (a web viewer for IIIF images in this part= icular case). The prefix contains a #, which, as a special character seems = to cause an error. Adding a double hash seems to work, but those ## will end up in the = link URL. How can I properly escape a single #? I’ve alrea= dy tried using \Ux{23}, but that won’t work either.=

 

Best,

Denis

 

\setupinteraction[state=3Dstart]

 

\startxmlsetups xml:test

        &nbs= p;       \xmlsetsetup{#1}{*}{-}

        &nbs= p;       \xmlsetsetup{#1}{doc|element}{xml:*}=

\stopxmlsetups

 

\xmlregisterdocumentsetup{test}{xml:test}=

 

\startxmlsetups xml:doc

\xmlflush{#1}

\stopxmlsetups

 

\startluacode

     function xml.finalizers.tex= .url(e,a)

         loc= al u =3D #e > 0 and e[1].at[a]

         loc= al s =3D u and lpeg.match(lpeg.patterns.urlunescaper,u)

         con= text(s)

     end

\stopluacode

 

\startxmlsetups xml:element

\xmldoifelse{#1}{.[@href and contains(@href,'https:/= /iiif.ub.unibe.ch')]}

 

        &nbs= p;       {\goto{\xmlflush{#1}}[url(https://uv= -v4.netlify.app/##?manifest=3D\xmlatt{#1}{href})]} % gives me two hashes in= the Link

        &nbs= p;      

        &nbs= p;       %{\goto{\xmlflush{#1}}[url(https://u= v-v4.netlify.app/#?manifest=3D\xmlatt{#1}{xlink:href})]} \par % does not wo= rk

        &nbs= p;      

        &nbs= p;       {\goto{\xmlflush{#1}}[url(\xmlatt{#1= }{href})]}

\stopxmlsetups

 

 

\startbuffer[test]

<?xml version=3D"1.0" encoding=3D"= UTF-8"?>

<doc>

<element href=3D"https://iiif.ub.unibe.ch/pr= esentation/v2.1/berner-inkunabeln/manifest/Inc%20I%20104%20fol%20a1r"&= gt;IIIF-Link</element>

<element href=3D"https://wiki.contextgarden.= net/">Other Link</element>

</doc>

\stopbuffer

 

\starttext

 

\xmlprocessbuffer{test}{test}{}

 

\stoptext

--_000_ZRAP278MB0495250B92D776D9493C540C83E3AZRAP278MB0495CHEP_-- --===============6202524926641959064== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context webpage : https://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.net ___________________________________________________________________________________ --===============6202524926641959064==--