* XML - creating a list by hand (mkiv) @ 2009-12-21 13:36 Peter Rolf 2009-12-22 13:04 ` Hans Hagen 0 siblings, 1 reply; 6+ messages in thread From: Peter Rolf @ 2009-12-21 13:36 UTC (permalink / raw) To: mailing list for ConTeXt users Hi, can someone give me a helping hand with the following example. I still have no general survey over the XML related code in ConTeXt (donno what functions to use). The last time I played with it is one and a half year ago and many things have changed (meaning that the old examples no longer work). I simply want to create a XML document and insert some elements. My main problem is to insert an element at root level. I can insert an element before and after another element, but not into the element. I'm not sure, if I have understood the meaning of the pattern parameter correctly. Is this equal to XPath? %----- \starttext \startluacode local xmp = xml.convert("<?xml version='1.0' standalone='yes'?>\n<root>\n<bar>bla</bar>\n</root>") --xml.before(xmp,"/root/bar","<sub>foo</sub>") --xml.delete(xmp,"bar") --xml.inject(xmp,"/sub","<sub>bar</sub>")-- only for xml-files? xml.insert(xmp,"/root/bar","<sub/>") --xml.inject(xmp,"/*/bar","<sub/>") --xml.sprint(xml.filter(xmp,"/root/sub")) xml.save(xmp,"test.xml") \stopluacode \stoptext %----- Best wishes, Peter ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: XML - creating a list by hand (mkiv) 2009-12-21 13:36 XML - creating a list by hand (mkiv) Peter Rolf @ 2009-12-22 13:04 ` Hans Hagen 2009-12-22 13:21 ` Peter Rolf 0 siblings, 1 reply; 6+ messages in thread From: Hans Hagen @ 2009-12-22 13:04 UTC (permalink / raw) To: mailing list for ConTeXt users Peter Rolf wrote: > Hi, > > can someone give me a helping hand with the following example. I still > have no general survey over the XML related code in ConTeXt (donno what > functions to use). The last time I played with it is one and a half year > ago and many things have changed (meaning that the old examples no > longer work). http://www.pragma-ade.com/general/manuals/xml-mkiv.pdf > I simply want to create a XML document and insert some elements. My main > problem is to insert an element at root level. I can insert an element > before and after another element, but not into the element. I'm not > sure, if I have understood the meaning of the pattern parameter > correctly. Is this equal to XPath? > > > %----- > \starttext > > \startluacode > > local xmp = xml.convert("<?xml version='1.0' > standalone='yes'?>\n<root>\n<bar>bla</bar>\n</root>") > --xml.before(xmp,"/root/bar","<sub>foo</sub>") > > --xml.delete(xmp,"bar") > --xml.inject(xmp,"/sub","<sub>bar</sub>")-- only for xml-files? > > xml.insert(xmp,"/root/bar","<sub/>") > --xml.inject(xmp,"/*/bar","<sub/>") this works <sub></sub> > --xml.sprint(xml.filter(xmp,"/root/sub")) > > xml.save(xmp,"test.xml") > > \stopluacode > > \stoptext > %----- > > > Best wishes, Peter > ___________________________________________________________________________________ > > 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 > ___________________________________________________________________________________ > -- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: XML - creating a list by hand (mkiv) 2009-12-22 13:04 ` Hans Hagen @ 2009-12-22 13:21 ` Peter Rolf 2009-12-22 13:33 ` Hans Hagen 0 siblings, 1 reply; 6+ messages in thread From: Peter Rolf @ 2009-12-22 13:21 UTC (permalink / raw) To: mailing list for ConTeXt users Am 22.12.2009 14:04, schrieb Hans Hagen: > Peter Rolf wrote: >> Hi, >> >> can someone give me a helping hand with the following example. I still >> have no general survey over the XML related code in ConTeXt (donno >> what functions to use). The last time I played with it is one and a >> half year ago and many things have changed (meaning that the old >> examples no longer work). > > http://www.pragma-ade.com/general/manuals/xml-mkiv.pdf > oeps, how could I missed that one... :( >> I simply want to create a XML document and insert some elements. My >> main problem is to insert an element at root level. I can insert an >> element before and after another element, but not into the element. >> I'm not sure, if I have understood the meaning of the pattern >> parameter correctly. Is this equal to XPath? >> >> >> %----- >> \starttext >> >> \startluacode >> >> local xmp = xml.convert("<?xml version='1.0' >> standalone='yes'?>\n<root>\n<bar>bla</bar>\n</root>") >> --xml.before(xmp,"/root/bar","<sub>foo</sub>") >> >> --xml.delete(xmp,"bar") >> --xml.inject(xmp,"/sub","<sub>bar</sub>")-- only for xml-files? >> >> xml.insert(xmp,"/root/bar","<sub/>") >> --xml.inject(xmp,"/*/bar","<sub/>") > > this works > > <sub></sub> > Mhh, not here. When I look into the saved file (test.xml) I get <?xml version='1.0' standalone='yes'?> <root> <bar>bla</bar><error>invalid xml file - unparsed text</error> </root> But I guess that the linked PDF will give all the answers I need. Thanks Hans! >> --xml.sprint(xml.filter(xmp,"/root/sub")) >> >> xml.save(xmp,"test.xml") >> >> \stopluacode >> >> \stoptext >> %----- >> >> >> Best wishes, Peter >> ___________________________________________________________________________________ >> >> 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 >> ___________________________________________________________________________________ >> > > ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: XML - creating a list by hand (mkiv) 2009-12-22 13:21 ` Peter Rolf @ 2009-12-22 13:33 ` Hans Hagen 2010-01-12 14:47 ` Peter Rolf 0 siblings, 1 reply; 6+ messages in thread From: Hans Hagen @ 2009-12-22 13:33 UTC (permalink / raw) To: mailing list for ConTeXt users Peter Rolf wrote: > Am 22.12.2009 14:04, schrieb Hans Hagen: >> Peter Rolf wrote: >>> Hi, >>> >>> can someone give me a helping hand with the following example. I still >>> have no general survey over the XML related code in ConTeXt (donno >>> what functions to use). The last time I played with it is one and a >>> half year ago and many things have changed (meaning that the old >>> examples no longer work). >> http://www.pragma-ade.com/general/manuals/xml-mkiv.pdf >> > oeps, how could I missed that one... :( > > >>> I simply want to create a XML document and insert some elements. My >>> main problem is to insert an element at root level. I can insert an >>> element before and after another element, but not into the element. >>> I'm not sure, if I have understood the meaning of the pattern >>> parameter correctly. Is this equal to XPath? >>> >>> >>> %----- >>> \starttext >>> >>> \startluacode >>> >>> local xmp = xml.convert("<?xml version='1.0' >>> standalone='yes'?>\n<root>\n<bar>bla</bar>\n</root>") >>> --xml.before(xmp,"/root/bar","<sub>foo</sub>") >>> >>> --xml.delete(xmp,"bar") >>> --xml.inject(xmp,"/sub","<sub>bar</sub>")-- only for xml-files? >>> >>> xml.insert(xmp,"/root/bar","<sub/>") >>> --xml.inject(xmp,"/*/bar","<sub/>") >> this works >> >> <sub></sub> >> > Mhh, not here. When I look into the saved file (test.xml) I get add some content (i need to look into the empty case (root only)) > <?xml version='1.0' standalone='yes'?> > <root> > <bar>bla</bar><error>invalid xml file - unparsed text</error> > </root> > > > But I guess that the linked PDF will give all the answers I need. the most important change is that we now can have many handlers; when you are inside tex and want to manipulate xml without piping to tex, you need the xml:// path prefix but the manual mentions this also, there are some tracing options that can be handy Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: XML - creating a list by hand (mkiv) 2009-12-22 13:33 ` Hans Hagen @ 2010-01-12 14:47 ` Peter Rolf 2010-01-13 22:10 ` Hans Hagen 0 siblings, 1 reply; 6+ messages in thread From: Peter Rolf @ 2010-01-12 14:47 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1: Type: text/plain, Size: 4333 bytes --] Hi, after a (too short) vacation I'm again trying to make this run. (btw: inserting in empty root still does not work here) I have attached a more detailed example (ugly XMP), that shows my current problems. The result of the operations is saved in "xmp.xml". And here are the problems... 1. xml.replace(xmp,"xml://rdf:Description/dc:creator/rdf:Seq/rdf:li","<rdf:li>dc:CREATOR1</rdf:li>") wanted: .. <rdf:Seq> <rdf:li>dc:CREATOR1</rdf:li> </rdf:Seq> .. I get : .. <rdf:Seq> dc:CREATOR1 </rdf:Seq> .. 2. How can I inject a piece of XML (file or text sequence) into the existing XML tree? I have managed to get a valid lpath expression ("xml://rdf:..." does not work), but nothing is inserted. 3. xml.insert(xmp,"xml://rdf:Description/dc:creator/rdf:Seq","<rdf:li>dc:CREATOR2</rdf:li>") works only, if another (even empty) <rdf:li> element already exists. If I delete this element beforehand, the string is inserted after <rdf:Seq>. What does ["comment"]={ "auto-child replaced by auto-descendant" } mean here? --- The problems must be examined exclusively (comment other problems to test). This is all very confusing, aside from the fact, that I'm used to think in xpath and not lpath. So I'm quite unsure, if this is a ConTeXt problem or just my ignorance of lpath. Anyhow, no fun ;) Greetings, Peter MTXrun | current version: 2010.01.11 14:57 This is LuaTeX, Version beta-0.50.0-2010011118 Am 22.12.2009 14:33, schrieb Hans Hagen: > Peter Rolf wrote: >> Am 22.12.2009 14:04, schrieb Hans Hagen: >>> Peter Rolf wrote: >>>> Hi, >>>> >>>> can someone give me a helping hand with the following example. I still >>>> have no general survey over the XML related code in ConTeXt (donno >>>> what functions to use). The last time I played with it is one and a >>>> half year ago and many things have changed (meaning that the old >>>> examples no longer work). >>> http://www.pragma-ade.com/general/manuals/xml-mkiv.pdf >>> >> oeps, how could I missed that one... :( >> >> >>>> I simply want to create a XML document and insert some elements. My >>>> main problem is to insert an element at root level. I can insert an >>>> element before and after another element, but not into the element. >>>> I'm not sure, if I have understood the meaning of the pattern >>>> parameter correctly. Is this equal to XPath? >>>> >>>> >>>> %----- >>>> \starttext >>>> >>>> \startluacode >>>> >>>> local xmp = xml.convert("<?xml version='1.0' >>>> standalone='yes'?>\n<root>\n<bar>bla</bar>\n</root>") >>>> --xml.before(xmp,"/root/bar","<sub>foo</sub>") >>>> >>>> --xml.delete(xmp,"bar") >>>> --xml.inject(xmp,"/sub","<sub>bar</sub>")-- only for xml-files? >>>> >>>> xml.insert(xmp,"/root/bar","<sub/>") >>>> --xml.inject(xmp,"/*/bar","<sub/>") >>> this works >>> >>> <sub></sub> >>> >> Mhh, not here. When I look into the saved file (test.xml) I get > > add some content (i need to look into the empty case (root only)) > >> <?xml version='1.0' standalone='yes'?> >> <root> >> <bar>bla</bar><error>invalid xml file - unparsed text</error> >> </root> >> >> >> But I guess that the linked PDF will give all the answers I need. > > the most important change is that we now can have many handlers; when > you are inside tex and want to manipulate xml without piping to tex, you > need the xml:// path prefix but the manual mentions this > > also, there are some tracing options that can be handy > > Hans > > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | fax: 038 477 53 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 > ___________________________________________________________________________________ > > [-- Attachment #2: xmp.tex --] [-- Type: text/plain, Size: 836 bytes --] \starttext \enabletrackers[xml.parse] %\enabletrackers[xml.path] %\enabletrackers[xml.profile] -- exclusive %\enabletrackers[xml.entities] \startluacode local xmp = xml.load("xmp-default.xml") -- 1. replace empty <rdf:li/>; (results in "dc:CREATOR1" without <rdf:li> tags) xml.replace(xmp,"xml://rdf:Description/dc:creator/rdf:Seq/rdf:li","<rdf:li>dc:CREATOR1</rdf:li>") -- 2. inject XML sequence; (how?) --xml.inject (xmp,"xml:///rdf:Description/dc:creator/rdf:Seq","<rdf:li>dc:CREATOR1</rdf:li>") -- delete the first <rdf:li> entry --xml.delete(xmp,"xml://rdf:Description/dc:creator/rdf:Seq/rdf:li") -- 3. insert element into <rdf:Seq>; (only after/before, but not into empty) --xml.insert (xmp,"xml:///rdf:Description/dc:creator/rdf:Seq","<rdf:li>dc:CREATOR2</rdf:li>") xml.save(xmp,"xmp.xml") \stopluacode \null \stoptext [-- Attachment #3: xmp-default.xml --] [-- Type: text/xml, Size: 1585 bytes --] <x:xmpmeta xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:format>application/pdf</dc:format> <dc:creator> <rdf:Seq> <rdf:li></rdf:li> </rdf:Seq> </dc:creator> <dc:description/> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default"/> </rdf:Alt> </dc:title> </rdf:Description> <rdf:Description rdf:about="" xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"> <pdfx:ConTeXt.Jobname/> <pdfx:ConTeXt.Time/> <pdfx:ConTeXt.Url/> <pdfx:ConTeXt.Version/> <pdfx:ID/> <pdfx:PTEX.Fullbanner/> </rdf:Description> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <xmp:CreateDate/> <xmp:CreatorTool/> <xmp:ModifyDate/> <xmp:MetadataDate/> </rdf:Description> <rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> <pdf:Keywords/> <pdf:Producer/> <pdf:Trapped/> </rdf:Description> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"> <xmpMM:DocumentID/> <xmpMM:InstanceID/> <xmpMM:RenditionClass/> <xmpMM:VersionID/> </rdf:Description> </rdf:RDF> </x:xmpmeta> [-- Attachment #4: Type: text/plain, Size: 486 bytes --] ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: XML - creating a list by hand (mkiv) 2010-01-12 14:47 ` Peter Rolf @ 2010-01-13 22:10 ` Hans Hagen 0 siblings, 0 replies; 6+ messages in thread From: Hans Hagen @ 2010-01-13 22:10 UTC (permalink / raw) To: mailing list for ConTeXt users On 12-1-2010 15:47, Peter Rolf wrote: > Hi, > > after a (too short) vacation I'm again trying to make this run. > (btw: inserting in empty root still does not work here) > > I have attached a more detailed example (ugly XMP), that shows my > current problems. The result of the operations is saved in "xmp.xml". when i have time i'll have a look at it keep in mind that the manipulation of the tree (remove, replace etc) is somewhat experimental and might even be broken as i didn't check it when i rewrote the lpath code Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-01-13 22:10 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-12-21 13:36 XML - creating a list by hand (mkiv) Peter Rolf 2009-12-22 13:04 ` Hans Hagen 2009-12-22 13:21 ` Peter Rolf 2009-12-22 13:33 ` Hans Hagen 2010-01-12 14:47 ` Peter Rolf 2010-01-13 22:10 ` Hans Hagen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).