Re: [xml] double namespace problem



"Marek Elsner" <marek icom pl> writes:

Hello,
I know that this problem is very easy to solve, but I have no idea how to do
it.
Sorry but I am starting with XPath. :-)
I have got xml file with two namespaces, one inside another.
As I know when I have one namespace, I can register it, and after that
query as "//namespac_name:node"
but how to do queries, when I have another namespace in namespace_name, and
I want to find a node inside two namespaces...?

thanks for help

Marek Elsner

A node can only belong to one namespace. If there are more than one
xmlns declarations for the same prefix (or without a prefix) in an XML
document, then the inner-most declaration (in the scope of which the
node occurs) counts, i.e. in

<foo1 xmlns="bar">
  <foo2/>
  <foo3 xmlns="baz">
    <foo4/>
  </foo3>
</foo1>

foo1 and foo2 belong to namespace "bar" whereas foo3 and foo4 belong
to "baz". It is however much less confusing to use distinct namespace
prefixes in such situations:

<f:foo1 xmlns:f="bar">
  <f:foo2/>
  <g:foo3 xmlns:g="baz">
    <g:foo4/>
  </g:foo3>
</f:foo1>

What you may be looking for is how to express (in XPath) the fact that
`a node belonging to the namespace "baz" descents from an element
belonging to the namespace "bar"'. Provided you have registered the
prefixes f and g with your xmlXPathContext, you could express that as
//f:*//g:something

/petr

P.S. As these are rather general XML questions, not necessarily
concerning libxml2, I'm not quite sure they should be addressed to
this list (apart from the fact that there is a plenty of sources where
you could find your answers just by reading them - if you don't want
to go through the w3c specs, have a look at http://zvon.org for
instance).

Attachment: pgpkFMfiDvV1H.pgp
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]