Reading Xpath element

M

MarcoT77

Hi Teacher.

I'm trying to get with Xpath the Product nodes in the following XML:
<?xml version="1.0" encoding="utf-8"?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="5.1" date="2005-05-03" time="16:41:33" author="TcEng -
infodba@bridge(389284449)">
<Header id="id1" traverseRootRefs="#id2 #id11"
transferContext="exp_folder"></Header>
<Product id="id10" name="Ace" accessRefs="#id3" subType="Drawing"
productId="000002">
<ApplicationRef version="QRJJ3Vh1xNEIWA" application="TcEng"
label="QRJJ3Vh1xNEIWA"></ApplicationRef>
<UserData id="id33">
<UserValue type="reference" value="" title="owning_user"
dataRef="#id11"></UserValue>
<UserValue value="0-01-00T00:00:00" title="date_released"></UserValue>
<UserValue value="2005-05-03T14:00:32"
title="last_mod_date"></UserValue>
<UserValue type="reference" value="" title="last_mod_user"
dataRef="#id11"></UserValue>
<UserValue type="reference" value="" title="owning_group"
dataRef="#id27"></UserValue>
<UserValue value="2005-05-03T10:46:39"
title="creation_date"></UserValue></UserData></Product> (Continue...)

I've used the /PLMXML/Product query but I can't get anything.

I've also tried this simple xml:
<?xml version='1.0'?>
<Books>
<Book>
<Title>Beginning XML</Title>
<Publisher>Wrox</Publisher>
</Book>
<Book>
<Title>XML Step by Step</Title>
<Publisher>MSPress</Publisher>
</Book>
<Book>
<Title>Professional XML</Title>
<Publisher>Wrox</Publisher>
</Book>
<Book>
<Title>Developing XML solutions</Title>
<Publisher>MSPress</Publisher>
</Book>
</Books>

And on this Xml the rule /Books/Book works fine.

Why does not the first rule work?
Am I missing something?

Thanks in advance.
Marco.
 
P

Philippe Poulard

Hi Teacher.

I'm trying to get with Xpath the Product nodes in the following XML:
<?xml version="1.0" encoding="utf-8"?>
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema"
schemaVersion="5.1" date="2005-05-03" time="16:41:33" author="TcEng -
infodba@bridge(389284449)">
<Header id="id1" traverseRootRefs="#id2 #id11"
transferContext="exp_folder"></Header>
<Product id="id10" name="Ace" accessRefs="#id3" subType="Drawing"
productId="000002">
<ApplicationRef version="QRJJ3Vh1xNEIWA" application="TcEng"
label="QRJJ3Vh1xNEIWA"></ApplicationRef>
<UserData id="id33">
<UserValue type="reference" value="" title="owning_user"
dataRef="#id11"></UserValue>
<UserValue value="0-01-00T00:00:00" title="date_released"></UserValue>
<UserValue value="2005-05-03T14:00:32"
title="last_mod_date"></UserValue>
<UserValue type="reference" value="" title="last_mod_user"
dataRef="#id11"></UserValue>
<UserValue type="reference" value="" title="owning_group"
dataRef="#id27"></UserValue>
<UserValue value="2005-05-03T10:46:39"
title="creation_date"></UserValue></UserData></Product> (Continue...)

I've used the /PLMXML/Product query but I can't get anything.

with XPath, unprefixed elements refers to elements that are not bound to
a namespace URI ; in XML, unprefixed elements may be bound to a
namespace URI ; this is the case in the document above, and not the case
in the document below
thus, /PLMXML gets the PLMXML element with no namespace URI, that
doesn't appear anywhere ; to get the PLMXML element bound to this
namespace URI "http://www.plmxml.org/Schemas/PLMXMLSchema", you must
declare a mapping between a prefix and the namespace URI :
plm -> "http://www.plmxml.org/Schemas/PLMXMLSchema"
and then use it in your XPath expression :
/plm:pLMXML/plm:product
how to declare the mapping vary according to the XPath engine you use,
but people usually use it with XSLT ; with XSLT, namespaces declarations
are used by the XPath engine
I've also tried this simple xml:
<?xml version='1.0'?>
<Books>
<Book>
<Title>Beginning XML</Title>
<Publisher>Wrox</Publisher>
</Book>
<Book>
<Title>XML Step by Step</Title>
<Publisher>MSPress</Publisher>
</Book>
<Book>
<Title>Professional XML</Title>
<Publisher>Wrox</Publisher>
</Book>
<Book>
<Title>Developing XML solutions</Title>
<Publisher>MSPress</Publisher>
</Book>
</Books>

And on this Xml the rule /Books/Book works fine.

Why does not the first rule work?
Am I missing something?

Thanks in advance.
Marco.


--
Cordialement,

///
(. .)
-----ooO--(_)--Ooo-----
| Philippe Poulard |
-----------------------
 
M

Marco

Thanks guys!

I'm using libxml2 libraries from C, and I solved the problem matching
nodes with name and namespace-uri attributes because I can't control
the xml format.
 
D

David Carlisle

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,050
Latest member
AngelS122

Latest Threads

Top