Hi Matthes,

You're entirely correct and did not make a mistake, only the namespaces from 
the message itself are used.  For my own needs I have extended the xpath syntax 
(new dialect) to use full qnames instead so:

//{http://www.opengis.net/om/1.0}:Observation/{http://www.opengis.net/om/1.0}:procedure/@xlink:href='urn:ogc:object:procedure:CITE:WeatherService:LGA'

becomes

//*[namespace-uri="http://www.opengis.net/om/1.0"; and 
local-name="Observation"]/...

but this decision was also driven from a tooling perspective.  Obviously its 
not helpful and I think the standard Muse behaviour is confusing.

Logically we should pass in what the prefixes map to and not just hope they are 
the same as used on the NotificationMessage.

Please raise this as an issue on jira, I may even be able to get a patch ready 
for it today.

cheers,
Chris

-----Original Message-----
From: Matthes R. [mailto:[EMAIL PROTECTED]
Sent: Saturday, August 30, 2008 1:40 PM
To: [email protected]
Subject: Problem (Bug?) with XPath filtering

Hello,

I have stumbled across a problem when trying to filter a NotificationMessage 
with an XPath expression containing namespace declarations (e.G.
//om:Observation/om:procedure - where om is "http://www.opengis.net/om/1.0 ").
Perhaps I made some mistake while subscribing with this filter, but to me it 
seems, that the MessagePatternFilter just invokes XPathUtils.isMatch().
isMatch itself invokes XPathAPI.eval(context, xpath) [from apache xalan api] 
and that method has no parameter for the namespaceNode. This has the result 
that the XPath expression takes its namespaces from the NotificationMessage, 
which of course may differ from the ones specified in my subscribe request.

Also I noticed that namespaces in a MessagePatternFilter xml file (see
below) just get erased when parsing the xml with the FilterFactory.

Filter to parse:
<wsnt:Filter xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2";>
    <wsnt:MessageContent Dialect="
http://www.w3.org/TR/1999/REC-xpath-19991116";
        xmlns:om="http://www.opengis.net/om/1.0";>

//om:Observation/om:procedure/@xlink:href='urn:ogc:object:procedure:CITE:WeatherService:LGA'
    </wsnt:MessageContent>
</wsnt:Filter>


this gets parsed in the subscribe operation of NotificationProducer (I assume 
this is done before in the FilterFactory):
<wsnt:Filter xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2";>
<wsnt:MessageContent Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116
">//om:Observation/om:procedure/@xlink:href='urn:ogc:object:procedure:CITE:WeatherService:LGA'</wsnt:MessageContent>
</wsnt:Filter>


As you can see the namespace "om:...." is removed.

Did i make a mistake or is there any kind of solution for this problem?

Regards,
Matthes

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to