[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Limiting a row to four items

Subject: Re: Limiting a row to four items
From: "Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 28 Aug 2020 08:53:10 -0000
Re:  Limiting a row to four items
Are you looking for an XSLT 1 solution?

In XSLT 2 or 3, you can do, when in stamp context: <xsl:for-each-group select="plate" group-adjacent="(@number - 1) idiv 4">, and create a row for each group.

If you tune the .block width so that 4 of them fit into a .row, you can also set flex-wrap:wrap in .row, then you need not create div.row at all.

Gerrit

On 28.08.2020 10:44, Mark Wilson mark@xxxxxxxxxxxx wrote:
This is likely in the archives but I have forgotten how to use them. Among the other things I have forgotten since I turned 80 is how to a put set of elements into rows for HTML output. I want to put what four <plate> elements conjure into each row; the number of< plate> elements in each <stamp> element varies. The <plate> element references the identity of a jpeg that will be put on the page. I want four jpegs in each row.

my css is:

.row {
 B  width: 100%;
 B  display: flex;
 B  flex-direction: row;
 B  justify-content: center;
}

My input XML is a long list of <stamp> elements with <plate> children.
....
<stamp >
 B B B B B B B B B B B B B B B  <plate number="1"/>
 B B B B B B B B B B B B B B B  <plate number="2"/>
 B B B B B B B B B B B B B B B  <plate number="3"/>
 B B B B B B B B B B B B B B B  <plate number="4"/>
 B B B B B B B B B B B B B B B  <plate number="5"/>
 B B B B B B B B B B B B B B B  <plate number="6"/>
 B B B B B B B B B B B B B B B  <plate number="7"/>
 B B B B B B B B B B B B B B B  <plate number="8"/>
</stamp>
....

and my XSLT dealing with this withinB <xsl:template match="stamp"> is:
<div class="row">
B B B B B B <xsl:for-each select="plate">
B B B B B B B B B B B B B <div class="block">
B B B B B B B B B B B B B B B B B B B B B B B B B B B <aB href="{concat('plates/', @number, '.jpg')}">
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B <img class="large" src="{concat('plates/',@number, 't.jpg')}"/>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B </a>
B B B B B B B B B B B B B B </div>
B B B B B B B B </xsl:for-each>
B </div>


Works fine for four or fewer <plate> elements, but more than that makes a mess
Any help appreciated,
Mark

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.