Back
Next
XSLT Multi Selection is use to convert multiple XML elements to a values for a single attribute. Here is the information about how this can be done with XSLT
multi selection.
<!--XML structure for XSLT Multi Selection in XSLT Tutorial-->
<WebPage>
<Head>
<Title>XSLT Tutorial at Global Guide Line</Title>
<MainCategory></MainCategory>
<Keyword>XSLT Tutorial</Keyword>
<Keyword>XSLT Function</Keyword>
<Keyword>XSLT Transformation</Keyword>
</Head>
<Body>
</Body>
<Info>
</Info>
</WebPage>
From the above source elements <Keyword> should be converted to the below
result.
<META name="keywords" content="XSLT Tutorial, XSLT Function,
XSLT Transformation">
All above is done with this XSLT transformation
Converting Multiple Elements To One Attribute In XSLT Multi Selection.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--Exampleof XSLT Multi Selection in XSLT Tutorial-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<HTML>
<HEAD>
<xsl:element name="META">
<xsl:attribute name="name">keywords</xsl:attribute>
<xsl:attribute name="content">
<xsl:for-each select="WebPage/Head/Keyword">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each>
</xsl:attribute>
</xsl:element>
<TITLE>
</TITLE>
</HEAD>
<BODY></BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
<xsl:element> and <xsl:attribute> on above code
allows dynamic creation of elements and attributes.
<xsl:element name="META"> defines the element of <META>.
and <xsl:attribute
name="name">
keywords</xsl:attribute> results as <META name="keywords">
on output.
The content of the attribute content on above code is created dynamically with a selection of each
<WebPage><Head><Keyword> element, and in between of these values a semicolon is
added.
<xsl:if test=position() != last()"> checks if the <Keyword> element was not the last one,
as with the last one no more semicolon is used.
<xsl:template match="/">
<HTML>
<HEAD>
<META name="keywords">
<xsl:attribute name="Content">
<!--Applying template below this
section of code-->
<xsl:apply-templates select="WebPage/Head/Keyword" />
</xsl:attribute>
</META>
<TITLE>
</TITLE>
</HEAD>
<BODY></BODY>
</HTML>
</xsl:template>
<xsl:template match="WebPage/Head/Keyword" >
<!--Use of xsl-value in XSLT Multi Selection-->
<xsl:value-of select="."/>
<!--If condition use in XSLT Multi Selection Example-->
<xsl:if test="following-sibling::Keyword">,</xsl:if>
</xsl:template>
Back
Next
|