Have you tried wrapping the affiliation bit in a for-each? Something like:
<xsl:for-each select=".//presentation">
<xsl:for-each select=".//person">
<xsl:value-of select="normalize-space(.)"/><xsl:text>	</xsl:text>
<xsl:for-each select="affiliation"/>
<xsl:value-of select="."/><xsl:text>|</xsl:text>
</xsl:for-each>
<xsl:text>	</xsl:text>
<xsl:value-of select="normalize-space(../
paper)"/><xsl:text> </xsl:text>
</xsl:for-each>
</xsl:for-each>
Ron Gilmour
Web Services Librarian
Ithaca College Library
On Thu, Nov 16, 2017 at 12:42 PM, Eric Lease Morgan <[log in to unmask]> wrote:
> 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?
>
|