- From: Norm Tovey-Walsh <norm@saxonica.com>
- Date: Thu, 17 Feb 2022 09:14:57 +0000
- To: ixml <public-ixml@w3.org>
- Message-ID: <m2czjlvocu.fsf@saxonica.com>
Given: contacts: (contact, NL*)+ . contact: name, NL, (email, NL)?, (phone, NL)? . name: namestart, ~[#a; "@"]* . email: namestart, namefollower*, "@", namestart, namefollower* . phone: ["+0123456789()- "]+ . -namestart: ["_"; L] . -namefollower: namestart; ["-.·‿⁀"; Nd; Mn] . -s: (-[Zs]; -#9; -#d)* . -NL: -#a ; -#d, -#a . And: Johh Doe john@example.com 555-1234 Mary Smith m.smith@estaff.example.com +1-222-555-2344 Jane Doe (512) 555-9999 Nancy Jones nancy@example.org You can get: $ coffeepot -pp -g:examples/contacts.ixml -i:examples/contacts.txt <contacts> <contact> <name>Johh Doe</name> <email>john@example.com</email> <phone>555-1234</phone> </contact> <contact> <name>Mary Smith</name> <email>m.smith@estaff.example.com</email> <phone>+1-222-555-2344</phone> </contact> <contact> <name>Jane Doe</name> <phone>(512) 555-9999</phone> </contact> <contact> <name>Nancy Jones</name> <email>nancy@example.org</email> </contact> </contacts>% or: $ coffeepot -pp -g:examples/contacts.ixml -i:examples/contacts.txt --format:json | jq . { "contacts": { "contact": [ { "name": "Johh Doe", "email": "john@example.com", "phone": "555-1234" }, { "name": "Mary Smith", "email": "m.smith@estaff.example.com", "phone": "+1-222-555-2344" }, { "name": "Jane Doe", "phone": "(512) 555-9999" }, { "name": "Nancy Jones", "email": "nancy@example.org" } ] } } (There’s also a “json-tree” view that will represent any XML output, but it’s long and boring for this example. And it has a bug at the moment.) Or, finally: $ coffeepot -pp -g:examples/contacts.ixml -i:examples/contacts.txt --format:csv "name","email","phone" "Johh Doe","john@example.com","555-1234" "Mary Smith","m.smith@estaff.example.com","+1-222-555-2344" "Jane Doe",,"(512) 555-9999" "Nancy Jones","nancy@example.org", Be seeing you, norm -- Norm Tovey-Walsh Saxonica
Received on Thursday, 17 February 2022 09:23:14 UTC