Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > questions using libxml2

Reply
Thread Tools

questions using libxml2

 
 
bdecker@flowcom.com.au
Guest
Posts: n/a
 
      03-02-2004
Hello,

I was hoping that someone here can please answer two questions
concerning libxml2 python module use:

1. Is this snippet correct?
doc = libxml2.parseDoc(readfile(filename))
ctxt = doc.xpathNewContext()
ctxt.xpathRegisterNs("xlink","http://www.w3.org/1999/xlink")

.... if so, to what purpose does one register the namespace
(xpathRegisterNs)???
It doesn't seem to effect the outcome of the script:
http://66.102.7.104/search?q=cache:s...hl=en&ie=UTF-8

....so I can't understand why it is being used.


2. Why do I seem to get unpredictable behaviour from code like:
doc = libxml2.parseFile("D:\\D\\XML\\system.xml")
current_nodes = doc.xpathEval("descendant-or-self::linux")
node = current_nodes[0]
print node
ctxt = node
while node:
node = node.xpathNextDescendant(node)
print node

How would I generate a list of all decendants of a node (besides
searching for children of children)?


3. Is there any such thing as an xlink ELEMENT (where element.ns =
"http://www.w3.org/1999/xlink")? The only examples that I can find only
demonstrate xlink ATTRIBUTES (where the namespace has to be declared in
every element with xlink attributes). I don't even know the reason for
declaring a namespace if we always do that.


Hopefuly someone can clear up my confusion.


Ben
 
Reply With Quote
 
 
 
 
Patrick TJ McPhee
Guest
Posts: n/a
 
      03-02-2004
In article <(E-Mail Removed)>,
<(E-Mail Removed)> wrote:

% 1. Is this snippet correct?
% doc = libxml2.parseDoc(readfile(filename))
% ctxt = doc.xpathNewContext()
% ctxt.xpathRegisterNs("xlink","http://www.w3.org/1999/xlink")

It looks fine as far as it goes.

% ... if so, to what purpose does one register the namespace
% (xpathRegisterNs)???

It depends on what you're doing. If you want to match against an element
or attribute in the xlink name space, then you need to register the name
space and use the registered prefix in your searches. For instance, you
could look for

//*[@xlink:href]

to find all the elements with links from them. In the actual document,
the name space prefix could be different, so you could match

<note xl:href='http://www.somewhere.somewhat/etc/etc/etc'>...</note>

% ...so I can't understand why it is being used.

It might not be necessary.

% 3. Is there any such thing as an xlink ELEMENT (where element.ns =

There isn't, but why not read the overview and find out?
http://www.w3.org/TR/xlink

% demonstrate xlink ATTRIBUTES (where the namespace has to be declared in
% every element with xlink attributes). I don't even know the reason for

You might want to read up on name spaces, too. The key is to have the
name space declaration be in scope at the point the name space is
used. This doesn't require that it be declared in every element
that uses it, although some tools might handle it that way rather than
migrating the declaration up an element. Try adding the name space
declaration to the top-level element in your document tree.



--

Patrick TJ McPhee
East York Canada
http://www.velocityreviews.com/forums/(E-Mail Removed)
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
print the content of a element in a xml file using libxml2 parser. sharan XML 0 05-02-2008 09:27 AM
Question about using SHIFT-JIS encoding with libxml2 saumya.agarwal@gmail.com XML 6 04-12-2007 08:59 AM
cannot import libxml2 python module on windoze using activePerl orPython IDLE Andrew Marlow Python 2 01-18-2007 07:57 AM
Using sax libxml2 html parser cesar.ortiz@gmail.com Python 1 01-06-2007 12:16 PM
decimal symbol problem (using libxml2) corley C Programming 2 07-05-2006 08:04 PM



Advertisments