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:lidc:CREATOR1") wanted: .. rdf:Seq rdf:lidc:CREATOR1 .. I get : .. rdf:Seq dc:CREATOR1 .. 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:lidc:CREATOR2") 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 ___________________________________________________________________________________