ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Peter Rolf <indiego@gmx.net>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: XML - creating a list by hand (mkiv)
Date: Tue, 12 Jan 2010 15:47:00 +0100	[thread overview]
Message-ID: <4B4C8B64.6010900@gmx.net> (raw)
In-Reply-To: <4B30CABD.1080303@wxs.nl>

[-- 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
___________________________________________________________________________________

  reply	other threads:[~2010-01-12 14:47 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-21 13:36 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 [this message]
2010-01-13 22:10         ` Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B4C8B64.6010900@gmx.net \
    --to=indiego@gmx.net \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).