Re: [xsl] problem with xsl:copy-of and counting lines

Subject: Re: [xsl] problem with xsl:copy-of and counting lines
From: Andreas Peter <info@xxxxxxxxxx>
Date: Wed, 20 Jun 2007 14:07:32 +0200
Quoting David Carlisle <davidc@xxxxxxxxx>:


But if I want to use the value of the string for other operations I
have to declare a global variable, right?

it depends what you want to do with it, I'd say 999 times out of a 1000 when users ask about variable usage the answer to the real underlying problem doesn't involve the use of variables at all.

If it is a global variable it has a global value, but i thought you
wanted different values calculated on different blocks.

Is it possible to match the node of an external document like
<xsl:template match="document('variables.xsl')/block"> or something
 like this?

You are mixing up the concepts of matching and selecting. a maych pattern says, more or less 2if you happen to come across a node that looks like this, do the following". It's Xpath expressions in select attributes that actually steer the processor to look in different places.

so you'd want

<xsl:template match="block">
 ...


then at some point if you want to process the other doc, do


<xsl:apply-templates select="document('variables.xsl')"/>

or

<xsl:apply-templates select="document('variables.xsl')/block"/>

or whataver's needed in your case.


The variables.xsl file looks like this:

oops that's xslt not an input file (although of course you can input xslt as data, it doesn't execute in that case)

To spread your stylesheet code across multiple docu,emts you don't use
document() you use xsl:import or xsl:include but these are compile time
constructs the whole stylesheet is constructed by importing teh
necessary .xsl files _before_ any transformation actually runs.


Take 10 steps back.


What problem are you trying to solve, just state it in english, without
assuming that the solution requires the use of xsl:variable.


I am just waiting for Michael
Kays two books about XPath 2.0 and XSLT 2.0 for helping me with the
theme.

are you using XSLT2 (all answers given so far assume the use of XSLt1) there are easier ways of counting lines in xslt2 as it has regular expression support.

Also, _why_ do you want to count all the lines in an xml file, ignoring
the XML structure, if that's what you really need it would seem to be
easier to use a non xml tool, wc -l for example.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________




Okay, 10 steps back. At the moment I am working on my diploma for my degreed engineer. I wanted to do something with xml and some transformations.

The source object is an printed broschure which was generated in
InDesign. I want to create a more automated possibility for ceating
the print data. Thats why I "try" to learn XSL(T) because the source
data comes from a database as xml files.

The main problem is that the document has a more or less complex structure.
For example every page has a different number of lines. If there is a
less number of lines than the maximum number of lines on a page the
rest of the page will be filled by announcements or sth else from a
pool of grafics.

My suggestion was: page height minus the lines of a certain group of
elements so that I can see if there is enough space for an
announcement or not.

At the beginning of the project I was very enthusiastic but now I
realise how much programmers know how is behind the "small" broschure.
And I am not a real programmer. My first contact with programming.

Thanks for listening :-) and helping.
Andreas

Current Thread