When I take your input files and remove the "..." bits to make them well
formed, and then run using
java -jar c:\MyJava\saxon8.jar -t test.xml test.xsl
I get
Saxon 8.7J from Saxonica
Java version 1.5.0_06
...
...
Type:
<div xmlns:xs="http://www.w3.org/2001/XMLSchema" class="syntax">
<p>testdoc <i>switches</i> <i>file</i></p>
</div>
at the command line, where:
...
which looks correct to me.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Trevor Nicholls [mailto:trevor(_at_)castingthevoid(_dot_)com]
Sent: 31 March 2006 06:32
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Preserve-space isn't
Hi
I am using XML to hold documents. For the most part I don't care about
whitespace, but I have certain elements which are
space-sensitive, e.g. a
syntax statement.
I have a DTD defining the documents (mydocs.dtd); included in
this DTD are
the following lines:
========== DTD ==========
<!ENTITY % simple "#PCDATA">
<!ENTITY % syntaxcontent "%simple;|synopt|synvar">
<!ENTITY % variable "%simple;|sub">
...
<!-- some entities are preformatted -->
<!ENTITY % space.att 'xml:space (default|preserve) #FIXED "preserve"'>
...
<!ELEMENT syntax (%syntaxcontent;)*>
<!ATTLIST syntax %space.att;>
<!ELEMENT synopt (%syntaxcontent;)*>
<!ELEMENT synvar (%variable;)*>
<!ELEMENT sub (%simple;)*>
=========================
A typical document might include the following:
========== XML ==========
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document SYSTEM "mydocs.dtd">
<document title="Testing Document">
...
<para>Type:</para>
<syntax>testdoc <synvar>switches</synvar>
<synvar>file</synvar></syntax>
<para>at the command line, where:</para>
...
</document>
=========================
I have a stylesheet which translates this to HTML, like so:
========== XSL ==========
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="html" encoding="ISO-8859-1"/>
...
<xsl:template match="syntax">
<div class="syntax">
<p><xsl:apply-templates /></p>
</div>
</xsl:template>
<xsl:template match="synopt">
[ <xsl:apply-templates/> ]
</xsl:template>
<xsl:template match="synvar">
<i><xsl:apply-templates /></i>
</xsl:template>
...
<!-- preserve spaces (and indentation) in syntax fragments-->
<xsl:template match="text()[ancestor::syntax]">
<xsl:value-of select="translate(.,' ',' ')" />
</xsl:template>
...
</xsl:stylesheet>
=========================
My problem is the space between the two <synvar> elements, which,
notwithstanding the xml:space="preserve" attribute on
<syntax>, is being
stripped. When I run the standard "showtree.xsl" stylesheet
on my document,
I see this output:
======== showtree ========
...
1.2.5 Element 'para' (document,section):
1.2.5.1 Text (document,section,para): {Type:}
1.2.6 Element 'syntax' (document,section):
1.2.6.A Attribute '{http://www.w3.org/XML/1998/namespace}xml:space':
{preserve}
1.2.6.1 Text (document,section,syntax): {testdoc }
1.2.6.2 Element 'synvar' (document,section,syntax):
1.2.6.2.1 Text (document,section,syntax,synvar): {switches}
1.2.6.3 Element 'synvar' (document,section,syntax):
1.2.6.3.1 Text (document,section,syntax,synvar): {file}
1.2.7 Element 'para' (document,section):
1.2.7.1 Text (document,section,para): {at the command line, where:}
...
==========================
So although <syntax> clearly has preserve space declared, the
space between
the <synvar> elements does not show up.
I may well have misunderstood how this is supposed to work,
but so far as I
can tell I have followed examples in several reputable books, and the
results I am seeing are not what they led me to expect.
I have tried this with XMLSpy 2006 Home edition on WinXP and
Saxon 8.6.3 on
Linux.
Where have I gone wrong?
Cheers
Trevor
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--