<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>Hi,</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>I'm using the PyXML Suite 0.8.3 with Python 2.3.</FONT></DIV>
<DIV><FONT size=2>The error I'm describing did not occur with 0.7.1 on Python 
2.2.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>The expression:</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>xpath.Evaluate( '//SUBSTANCE_GROUP[not( contains( @name, 
"reverse" ) )]/SUBSTANCE', doc&nbsp;)</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>failed with:</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>'Expected node set from relative expression.&nbsp; Got 
()'</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>for the doc from:</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>&lt;?xml 
version="1.0"?&gt;<BR>&lt;SUBSTANCE_GROUPS&gt;<BR>&nbsp;&nbsp; 
&lt;SUBSTANCE_GROUP name="cyp2D6"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;SUBSTANCE name="cyp2D6_Oligo15" job="C188T" alias="C188T-WT" 
rank="1"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo20" 
alias="C188T-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo25" job="C1062A" alias="C1062A-WT" 
rank="2"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo26" 
alias="C1062A-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo35" job="A1072G" alias="A1072G-WT" 
rank="3"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo38" 
alias="A1072G-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo51" job="C1085G" alias="C1085G-WT" 
rank="4"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo52" 
alias="C1085G-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo141" job="C1127T" alias="C1127T-WT" 
rank="5"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo138" 
alias="C1127T-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo65" job="G1749C" alias="G1749C-WT" 
rank="6"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo70" 
alias="G1749C-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo77" job="dT1795" alias="dT1795-WT" 
rank="7"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo80" 
alias="dT1795-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo89" job="G1934" alias="G1934-WT" 
rank="8"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo84" 
alias="G1934-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo101" job="G2064A" alias="G2064A-WT" 
rank="9"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo96" 
alias="G2064A-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo109" job="" alias="dA2637-WT" 
rank="10"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo110" 
alias="dA2637-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo115" alias="C2938T-WT" 
rank="11"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo123" job="G4268C" alias="G4268C-WT" 
rank="12"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo130" 
alias="G4268C-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo116" 
alias="C2938T-MUT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp; &lt;/SUBSTANCE_GROUP&gt;<BR>&nbsp;&nbsp; 
&lt;SUBSTANCE_GROUP name="cyp2D6 - 
reverse"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo20" alias="C188T-MUT" 
rank="1"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo15" 
alias="C188T-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo26" alias="C1062A-MUT" 
rank="2"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo25" 
alias="C1062A-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo38" alias="A1072G-MUT" 
rank="3"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo35" 
alias="A1072G-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo52" alias="C1085G-MUT" 
rank="4"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo51" 
alias="C1085G-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo138" alias="C1127T-MUT" 
rank="5"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo141" 
alias="C1127T-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo70" alias="G1749C-MUT" 
rank="6"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo65" 
alias="G1749C-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo80" alias="dT1795-MUT" 
rank="7"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo77" 
alias="dT1795-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo84" alias="G1934-MUT" 
rank="8"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo89" 
alias="G1934-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo96" alias="G2064A-MUT" 
rank="9"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo101" 
alias="G2064A-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo110" alias="dA2637-MUT" 
rank="10"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo109" 
alias="dA2637-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo116" alias="C2938T-MUT" 
rank="11"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo115" 
alias="C2938T-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SUBSTANCE 
name="cyp2D6_Oligo130" alias="G4268C-MUT" 
rank="12"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;REL_SUBSTANCE name="cyp2D6_Oligo123" 
alias="G4268C-WT"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/SUBSTANCE&gt;<BR>&nbsp;&nbsp; 
&lt;/SUBSTANCE_GROUP&gt;<BR>&lt;/SUBSTANCE_GROUPS&gt;<BR></FONT></DIV>
<DIV><FONT size=2>I traced down the position the evaluation failed 
on:</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>class ParsedRelativeLocationPath:<BR>&nbsp;&nbsp;&nbsp; 
...</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; def evaluate(self, 
context):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rt = 
self._left.select(context)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
type(rt) != 
type([]):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
raise Exception("Expected node set from relative expression.&nbsp; Got 
%s"%str(rt))</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; ....</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>The method got an empty tuple from the 
self._left.select(context) call.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>I added a statement in the&nbsp;class method below and every 
seems to work fine.</DIV>
<DIV></FONT>&nbsp;</DIV>
<DIV><FONT size=2>class 
ParsedChildAxisSpecifier(AxisSpecifier):<BR>&nbsp;&nbsp;&nbsp; def select(self, 
context, nodeTest):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; """Select all 
of the children of the context 
node"""<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rt = filter(lambda node, 
test=nodeTest, context=context, 
pt=self.principalType:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
test(context, node, 
pt),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
context.node.childNodes)</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ######## added line 
#########<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>rt = list( rt 
)</STRONG></FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
##########################<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
(rt, 0)</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>My question is: Is there perhaps an error on my 
side?</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>Matthias Kirst</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV></BODY></HTML>