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

Re: word list and count from the text in an xml docume

Subject: Re: word list and count from the text in an xml document
From: "Mark" <mark@xxxxxxxxxxxx>
Date: Sat, 12 Jun 2010 16:56:24 -0700
Re:  word list and count from the text in an xml docume
You style sheet worked great and was very simple to modify for word order.
Thanks again,

From: "Michael Kay" <mike@xxxxxxxxxxxx>
Sent: Saturday, June 12, 2010 3:27 PM
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re:  word list and count from the text in an xml document

You will find the solution to this example on p19 of my book, XSLT 2.0 and XPath 2.0 Programmer's Reference. In case you don't have the book, here is the code (but if you do have the book, you get an explanation as well!)

<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
<xsl:for-each-group group-by="." select="
for $w in //text()/tokenize(., '\W+')[.!=''] return lower-case($w)">
<xsl:sort select="count(current-group())" order="descending"/>
<word word="{current-grouping-key()}" frequency="{count(current-group())}"/>


This is sorted by frequency - I leave it as an exercise to sort by the word value instead.

Michael Kay

On 12/06/2010 21:51, Mark wrote:
I have been floundering around in the xsl-list archives for a while looking for a way to get a listing and count of all the words in every instance of a specific element. Thousands of hits, but I think I am not using the correct search terms. I know what I want must be in the archive, but I just can't seem to narrow my search enough to find it.

Given a fragment like (and concentrating on the moment on the lang="en" element):
<Data lang="cz"> bmla skvrnka na spodnm casti pmsmene L ve SLOV</Data>
<Data lang="en">white splotch on the lower bar on the L in SLOV</Data>
<Data lang="cz">barevn} bod pod dolnmm ramem vlevo od VHB</Data>
<Data lang="en">dot on the lower frame to the left of VHB</Data>

I would like to create a list like the one below (it would be nice to be able to use a "stop word" list also so as to not count stuff like "on", ""the", etc.):
bar 1
dot 1
frame 1
in 1
L 1
left 1
lower 2
of 1
on 3
splotch 1
the 3
to 1
white 1


Current Thread


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.
First Name
Last Name
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.