Subject: RE: why no indent here
From: Roelof Wobben <rwobben@xxxxxxxxxxx>
Date: Mon, 12 Dec 2011 12:25:37 +0000
|
I found a answer here
(http://www.dpawson.co.uk/xsl/sect2/N7240.html#d10122e376) but it seems no to
work here.
So I have this xslt :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method=" xml"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
<xsl:template match="/">
<xsl:apply-templates select="data/params" mode="top" />
<body>
<div id="outer">
<div id="container">
<div id="search">
<form method="get" id="searchform"
action="http://www.notepadchaos.com/">
<input type="text" value="" name="s" id="s"
class="txtField" />
<input type="submit" id="searchsubmit"
class="btnSearch" value="Find It " />
</form>
</div>
<div id="title">
<h2><xsl:text>Tamara Wobben</xsl:text></h2>
</div>
</div>
<div id="content">
<div class="col01">
<xsl:apply-templates select="data/section/entry"
/>
</div>
<div class="side-columns">
<div class="col02">
<div class="pages">
<!-- hier komen de losse pagina's -->
</div>
<div class="categories">
<!-- hier komt het menu -->
</div>
</div>
<div class ="col03">
<!-- hier komen de recente posts -->
</div>
</div>
</div>
</div>
</body>
</xsl:template>
<xsl:template match="data/params" mode="top" >
<head>
<title>
<xsl:value-of select="root"/>
</title>
<link rel="stylesheet"
href="http://www.notepadchaos.com/wp-content/themes/notepad-chaos-v2/style.cs
s" type="text/css" media="screen" />
</head>
</xsl:template>
<xsl:template match="section/entry">
<div class="post">
<h3><xsl:value-of select="title"/> </h3>
<div class="post-inner">
<xsl:apply-templates select="data/section/entry/body/text()"
/>
</div>
</div>
</xsl:template>
<xsl:template match="body//text()">
<xsl:call-template name="make-verbatim">
<xsl:with-param name="text" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="make-verbatim">
<xsl:param name="text" select="''"/>
<xsl:variable name="starts-with-space"
select="substring($text, 1, 1) = ' '"/>
<xsl:variable name="starts-with-nl"
select="substring($text, 1, 1) = '
'"/>
<xsl:variable name="before-space">
<xsl:if test="contains($text, ' ')">
<xsl:value-of select="substring-before($text, ' ')"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="before-nl">
<xsl:if test="contains($text, '
')">
<xsl:value-of
select="substring-before($text, '
')"/>
</xsl:if>
</xsl:variable>
<xsl:choose>
<xsl:when test="$starts-with-space">
<xsl:text> </xsl:text>
<xsl:call-template name="make-verbatim">
<xsl:with-param name="text"
select="substring($text,2)"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$starts-with-nl">
<br/><xsl:text>
</xsl:text>
<xsl:call-template name="make-verbatim">
<xsl:with-param name="text"
select="substring($text,2)"/>
</xsl:call-template>
</xsl:when>
<!-- if the string before a space
is shorter than the string before
a newline, fix the space...-->
<xsl:when test="$before-space != ''
and ((string-length($before-space)
< string-length($before-nl))
or $before-nl = '')">
<xsl:value-of select="$before-space"/>
<xsl:text> </xsl:text>
<xsl:call-template name="make-verbatim">
<xsl:with-param name="text"
select="substring-after($text, ' ')"/>
</xsl:call-template>
</xsl:when>
<!-- if the string before a newline
is shorter than the string before
a space, fix the newline...-->
<xsl:when test="$before-nl != ''
and ((string-length($before-nl)
< string-length($before-space))
or $before-space = '')">
<xsl:value-of select="$before-nl"/>
<br/><xsl:text>
</xsl:text>
<xsl:call-template name="make-verbatim">
<xsl:with-param name="text"
select="substring-after($text, '
')"/>
</xsl:call-template>
</xsl:when>
<!-- the string before the newline and the string before the
space are the same; which means they must both be empty -->
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
And this is my full xml :
<?xml version="1.0" encoding="utf-8" ?>
<data>
<params>
<today>2011-12-09</today>
<current-time>13:22</current-time>
<this-year>2011</this-year>
<this-month>12</this-month>
<this-day>09</this-day>
<timezone>+01:00</timezone>
<website-name>Tamara Wobben</website-name>
<page-title>Home</page-title>
<root>http://test.tamarawobben.nl</root>
<workspace>http://test.tamarawobben.nl/workspace</workspace>
<root-page>home</root-page>
<current-page>home</current-page>
<current-page-id>4</current-page-id>
<current-path>/home/?debug&symphony-page=home/</current-path>
<parent-path>/</parent-path>
<current-url>http://test.tamarawobben.nl/home/?debug&symphony-page=home/<
/current-url>
<upload-limit>2097152</upload-limit>
<symphony-version>2.2.5</symphony-version>
<cookie-username>admin</cookie-username>
<cookie-pass>bd619be1eb114dce7512fc0c5af1487c58074ab4</cookie-pass>
<site-mode>live</site-mode>
<ds-section>
<item handle="1"><span class="order">1</span></item>
</ds-section>
</params>
<events />
<section>
<section id="6" handle="sections">Sections</section>
<entry id="9">
<title handle="even-voorstellen">Even voorstellen</title>
<body>Naam : Tamara Wobben
Geboorte gewicht : 2000 gram
Geboorte lengte : 44 cm.
Geboortedatum : 1 september 2005
</body>
</entry>
</section>
</data>
But no not a single character is shown.
Roelof
----------------------------------------
> Date: Mon, 12 Dec 2011 09:15:56 +0000
> From: mike@xxxxxxxxxxxx
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: why no indent here
>
> >So I can't preserve the linebreaks in the xml file into the html file ?
>
> If you do "view source" you'll see that the line breaks are indeed
> present in your HTML. The problem is that line breaks in HTML aren't
> displayed as line breaks by the browser. To get a line break in the
> browser output, you need a <br> element in the HTML.
>
> The question "how do I convert linebreaks into <br> elements" is FAQ
> and you should be able to find an answer by googling.
>
> Michael Kay
> Saxonica
|