How can I use XSLT to find the direct descendants of a given element with a given name? I want to create a tab-delimited version of an XML file. I have the following XML snippet, and notice how each of the persons in the first presentation have a single affiliation, but the person of the second presentation has two affiliations: <session> <presentation> <person>RICHARD G. ANDERSON</person> <affiliation>Lindenwood University</affiliation> <person>AREERAT KICHKHA</person> <affiliation>Lindenwood University</affiliation> <paper>Is Less More?</paper> </presentation> <presentation> <person>BRIAN W. SLOBODA</person> <affiliation>University of Maryland</affiliation> <affiliation>University College</affiliation> <paper>Inflation Policies</paper> </presentation> </session> I want my resulting tab-delimited file to look like this: RICHARD G. ANDERSON Lindenwood University Is Less More? AREERAT KICHKHA Lindenwood University Is Less More? BRIAN W. SLOBODA University of Maryland|University College Inflation Policies I have the following XSLT snippet, but my process of getting affiliations is not nearly correct: <xsl:for-each select=".//presentation"> <xsl:for-each select=".//person"> <xsl:value-of select="normalize-space(.)"/><xsl:text>	</xsl:text> <xsl:value-of select="normalize-space(../affiliation)"/><xsl:text>	</xsl:text> <xsl:value-of select="normalize-space(../paper)"/><xsl:text> </xsl:text> </xsl:for-each> </xsl:for-each> Can you offer any suggestions? What sort of XPath expression should I be using to find all of the affiliation elements between person elements? Something with following-sibling?