Re: [xsl] Error: sequence of more than one item not allowed

Subject: Re: [xsl] Error: sequence of more than one item not allowed
From: "Mark" <mark@xxxxxxxxxxxx>
Date: Tue, 4 Oct 2011 03:20:56 -0700
Hi Andrew and Michael,
Michael,
Sorry, I normally do provide sample input and a context, but it would have taken a great deal of time to set up and it is just after 3 am. Luckily, Andrew spotted exactly what I needed.


Andrew,
Perfect! (And I would have never thought of using the grouping key, but now I know.)


You are right (2)'s grouping key does look odd. It is used to output a set of XHTML navigation buttons keyed to the "other kinds of formats available in <Formats>". In full, (2) looks quite strange, but it has replaced almost five pages of complex string parsing and testing. Ken Holman got on my case about my using so much C++ idiom string-parsing, so I been trying to work with just the nodes. My unexplained cps:functions mostly output formatted text for the XHMTL page.

Thanks to you both,
Mark

(2) in full:

<!-- Show related formats -->
<xsl:choose>
<xsl:when test="count(../../Stamp/Formats/@*[not(name(.)=$format)]) eq 1">
<xsl:if test="../../Stamp/Formats/@*[not(name(.)=$format)] eq $item">
<a lang="en" class="button"
href="{concat(ancestor::Set/@year, '-',../../Stamp/Formats/@*[not(name(.)=$format)],cps:file-format-from-name(name(../../Stamp/Formats/@*[not(name(.)=$format)])), '.htm')}">
<xsl:value-of select="cps:english-format-name(name(../../Stamp/Formats/@*[not(name(.)=$format)]))"/>
</a>
<a lang="cz" class="button"
href="{concat(ancestor::Set/@year, '-', ../../Stamp/Formats/@*[not(name(.)=$format)], cps:file-format-from-name(name(../../Stamp/Formats/@*[not(name(.)=$format)])),'.htm')}">
<xsl:value-of select="cps:czech-format-name(name(../../Stamp/Formats/@*[not(name(.)=$format)]))"/>
</a>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:for-each-group select="../../Stamp/Formats" group-by="@*[not(name(.)=$format)]">
<xsl:for-each select="current-group()">
<xsl:if test="current-grouping-key() eq $item">
<a lang="en" class="button" href="{concat(ancestor::Set/@year, '-', @*[not(name(.)=$format)],cps:file-format-from-name(name(@*[not(name(.)=$format)])), '.htm')}">
<xsl:value-of select="concat(cps:english-format-name(name(@*[not(name(.)=$format)])), ' ')"/>
<xsl:value-of select="position()"/>
</a>
<a lang="cz" class="button" href="{concat(ancestor::Set/@year, '-', @*[not(name(.)=$format)], cps:file-format-from-name(name(@*[not(name(.)=$format)])),'.htm')}">
<xsl:value-of select="position()"/>
<xsl:value-of select="concat('. ', cps:czech-format-name(name(@*[not(name(.)=$format)])))"/>
</a>
</xsl:if>
</xsl:for-each>
</xsl:for-each-group>
</xsl:otherwise>
</xsl:choose>


Current Thread