select nodes with child node A and child node B

G

gplott

I have an XML document that has multiple childe nodes like the one at
the end of this message

What syntax would I use with selectNodes to select all viewentry nodes
that have an

entrydata child node with a name attribute equal to
"CourseOrMeetingName"
that has a text childe node with the text Course ABC

AND that also have an

entrydata child with a name attribute equal to Start Date
that has a datetime child node with the text 20070110

I was trying something like

//viewentry[ (entrydata[@name='CourseOrMeetingName'][text='Course
ABC']) and (entrydata[@name='StartDate'][datetime='20070110'])]"

<viewentry position="1" unid="E5FE575692CAB4CD852572140052F751"
noteid="893A" siblings="24">
<entrydata columnnumber="0" name="CourseOrMeetingName">
<text>Course ABC</text></entrydata>
<entrydata columnnumber="1" name="StartDate">
<datetime>20070110</datetime></entrydata>
<entrydata columnnumber="2" name="City">
<text>West chester</text></entrydata>
<entrydata columnnumber="3" name="FirstName">
<text>Joe</text></entrydata>
<entrydata columnnumber="4" name="MiddleName">
<text></text></entrydata>
<entrydata columnnumber="5" name="LastName">
<text>Blow</text></entrydata>
</viewentry>

Thanks,

Glenn
 
J

Joe Kesselman

//viewentry[ (entrydata[@name='CourseOrMeetingName'][text='Course
ABC']) and (entrydata[@name='StartDate'][datetime='20070110'])]"

Works just fine when I try it on your sample fragment, using Xalan:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:copy-of select="//viewentry[
(entrydata[@name='CourseOrMeetingName'][text='Course ABC']) and
(entrydata[@name='StartDate'][datetime='20070110'])]"/>
</xsl:template>
</xsl:stylesheet>

Output is
<?xml version="1.0" encoding="UTF-8"?><viewentry position="1"
unid="E5FE575692CAB4CD852572140052F751" noteid="893A" siblings="24">
<entrydata columnnumber="0" name="CourseOrMeetingName">
<text>Course ABC</text></entrydata>
<entrydata columnnumber="1" name="StartDate">
<datetime>20070110</datetime></entrydata>
<entrydata columnnumber="2" name="City">
<text>West chester</text></entrydata>
<entrydata columnnumber="3" name="FirstName">
<text>Joe</text></entrydata>
<entrydata columnnumber="4" name="MiddleName">
<text/></entrydata>
<entrydata columnnumber="5" name="LastName">
<text>Blow</text></entrydata>
</viewentry>
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top