Re: [xsl] [XSL]Display Different Results Based on Count of NodeSets

Subject: Re: [xsl] [XSL]Display Different Results Based on Count of NodeSets
From: Alice Ju-Hsuan Wei <ajwei@xxxxxxxxxxx>
Date: Mon, 24 Sep 2007 08:24:40 -0400
Hi,

 This is what I got for the output (I am actually using XSLT to
transform into HTML, so the XML, is the input as shown below:

<book>

  <author>Tennison, Jeni
  <title>Beginning XSLT
       <publisher>Wrox</publisher>
 <publication>2002</publication>
 </title>
 <title>Beginning XSLT 2.0</title>
 </author>

 <author>Meyer, Eric
<title>The Zen of CSS</title>
   <publication>2005</publication>
</author>

</book>

 The output, oddly, when I used <xsl:value of select="count(title)"/>
instead of position() it produced 2 and 1, respectively, but when the
<xsl:apply-templates was inserted, it generates output of

 <div><p>Tennison, Jeni.</p>
 <p><i>Beginning XSLT</i>. <b>Wrox</b>, [2002].</p>
  <p><i>Begining XSLT 2.0</i>.</p></div>

   <div><p>Meyer, Eric.</p>
   <p><i>The Zen of CSS</i>.</p>
    </div>

When I used the one below:

<xsl:template match="title">
     <xsl:choose>
         <xsl:when test="position() ='1'"/>
         <xsl:otherwise>
             <p>
                 <xsl:apply-templates/>

             </p>
         </xsl:otherwise>
     </xsl:choose>
 </xsl:template>

<xsl:template match="publication">
[<xsl:value-of select="."/>].
</xsl:template>

<xsl:template match="publisher">
<b><xsl:value-of select="."/></b>.
</xsl:template>

It brings back the same input. However, I wanted the one on the first
of the <title> to be something like:

   <div><p>Tennison, Jeni. <i>Beginning XSLT</i>.<b>Wrox</b>, [2002].</p>
       <p><i>Begining XSLT 2.0</i>.</p></div>

<div><p>Meyer, Eric. <i>The Zen of CSS.</i></p></div>


Is there some way I can do this?


Many thanks.

Alice

Current Thread