xsl-list
[Top] [All Lists]

[xsl] Fwd: xsl:for-each in Corresp Tag

2020-02-13 01:22:29
Yes Wendell,  I have tried <xsl: Apply-templates/>. But double comma
appearing after </institution>.

How can I handle if 3 type of variations coming in XML file.

Thank
Byomokesh

---------- Forwarded message ---------
From: Byomokesh Sahoo <sahoo(_dot_)byomokesh(_at_)gmail(_dot_)com>
Date: Wed, 12 Feb, 2020, 10:35 PM
Subject: xsl:for-each in Corresp Tag
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>


Hi,

I am facing difficulty to get required output in different structure of
<corres>. Find the below three types of tagging structure.

Not getting exact output if apply <xsl:for-each> on below three type of
scenario.

XML

<corresp><label>Correspondence to</label> Anne Marie Darling, <institution
content-type="department">Department of Epidemiology</institution>,
<institution>Boston University</institution>, <addr-line
content-type="street">715 Albany Street</addr-line>,
<country>USA</country>; <email>amdarlin(_at_)bu(_dot_)edu</email></corresp>

<corresp><label>Correspondence to</label> Anne Marie Darling, <institution
content-type="department">Department of Epidemiology</institution>,
<addr-line content-type="postal-code">02118</addr-line>,
<country>USA</country>; </corresp>

<corresp>Joanne Lawrence, Association of British Neurologists, Ormond
House, 27 Boswell Street, London WC1N 3JZ, UK; <email>
joanne(_dot_)lawrence(_at_)abn(_dot_)org(_dot_)uk</email></corresp>

My XSLT
<xsl:template match="corresp">
<xsl:element name="corresp">
<xsl:for-each select="label">
<xsl:element name="x">
<xsl:value-of select="."/>
</xsl:element>
<xsl:text>, </xsl:text>
</xsl:for-each>
<institution>
<xsl:for-each select="institution">
<xsl:choose>
<xsl:when test="@content-type='department'">

<xsl:element name="department">
<xsl:apply-templates select="node()" mode="copy-no-namespaces"/>
</xsl:element>
<xsl:text>, </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:element name="institution-name">
<xsl:value-of select="."/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</institution>
<xsl:text>, </xsl:text>

<xsl:for-each select="addr-line">
<xsl:choose>
<xsl:when test="@content-type='street'">
<xsl:element name="street">
<xsl:value-of select="."/>
</xsl:element>
<xsl:text>, </xsl:text>
</xsl:when>
<xsl:when test="@content-type='postal-code'">
<xsl:element name="postal-code">
<xsl:value-of select="."/>
</xsl:element>
<xsl:text>, </xsl:text>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="country">
<xsl:element name="country">
<xsl:value-of select="."/>
</xsl:element>
<xsl:text>; </xsl:text>
</xsl:for-each>
<xsl:for-each select="email">
<xsl:element name="email">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>

Desired Output

<corresp><x>Correspondence to</x> Anne Marie Darling,
<institution><department>Department of Epidemiology</department>,
<institution-name>Boston University</institution-name></institution>,
<street>715 Albany Street</street>, <country>USA</country>; <email>
amdarlin(_at_)bu(_dot_)edu</email></corresp>

<corresp><x>Correspondence to</x> Anne Marie Darling,
<institution><department>Department of Epidemiology</department>,
<postal-code>02118</postal-code>, <country>USA</country>; <email>
amdarlin(_at_)bu(_dot_)edu</email></corresp>

<corresp>Joanne Lawrence, Association of British Neurologists, Ormond
House, 27 Boswell Street, London WC1N 3JZ, UK; <email>
joanne(_dot_)lawrence(_at_)abn(_dot_)org(_dot_)uk</email></corresp>

Kindly suggest.

thanks
byomokesh
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>