XML and XSL

H

Hal

Hi all

I am having a hard time with XML. It's not that I don't understand the
concepts, but I really feel it wouldn't be that difficult if it wasn't for
the browsers.

Using the files below, IE gives expected results (by 'expected' I mean, it
gives the results that I wanted):

Mark
Peter
Bob


However, Firefox only lists Bob.

If anyone could tell me why, I would be really grateful.

My aim is to produce XML-based graphical (showing jpg images and data) and
database-driven websites that are fully functional in both the latest
version of Firefox and IE 6 SP1 onwards. Am I being unrealistic? Is there
any XML technology that can offer me consistent results in both browsers, or
am I being unrealistic?

Any thoughts would be appreciated!

With thanks
Hal





[file1: 1002people.xml]
<?xml version="1.0" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="1002people.xsl" ?>

<!-- this is a list of people -->
<people>
<husband employed="Yes">
<name>Mark</name>
<age>46</age>
<wife>
<wname>Janet</wname>
<age>42</age>
</wife>
</husband>
<husband employed="No">
<name>Peter</name>
<age>33</age>
<wife>
<wname>Sally</wname>
<age>28</age>
</wife>
</husband>
<husband employed="No">
<name>Bob</name>
<age>38</age>
<wife>
<wname>Annie</wname>
<age>23</age>
</wife>
</husband>

</people>



[file2: 1002people.xsl]
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="husband">
<xsl:value-of select="name" /><br />
</xsl:template>


</xsl:stylesheet>
 
M

Magnus Henriksson

Hal said:
Using the files below, IE gives expected results (by 'expected' I mean, it
gives the results that I wanted):

Mark
Peter
Bob
[file1: 1002people.xml]
<?xml version="1.0" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="1002people.xsl" ?>

<!-- this is a list of people -->
<people>
<husband employed="Yes">
<name>Mark</name>
<age>46</age>
<wife>
<wname>Janet</wname>
<age>42</age>
</wife>
</husband>
<husband employed="No">
<name>Peter</name>
<age>33</age>
<wife>
<wname>Sally</wname>
<age>28</age>
</wife>
</husband>
<husband employed="No">
<name>Bob</name>
<age>38</age>
<wife>
<wname>Annie</wname>
<age>23</age>
</wife>
</husband>

</people>



[file2: 1002people.xsl]
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="husband">
<xsl:value-of select="name" /><br />
</xsl:template>


</xsl:stylesheet>

Try this:

[file2: 1002people.xsl]
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>

<xsl:template match="husband">
<xsl:value-of select="name" /><br />
</xsl:template>


</xsl:stylesheet>
 
J

Johannes Koch

Hal said:
Using the files below, IE gives expected results (by 'expected' I mean, it
gives the results that I wanted):

Mark
Peter
Bob


However, Firefox only lists Bob.

Firefox just has a different error recovery :)

[...]
[file2: 1002people.xsl]
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="husband">
<xsl:value-of select="name" /><br />
</xsl:template>


</xsl:stylesheet>

You have to create a root element in the result tree.
 
H

Hal

Magnus - you beauty! Yes, that worked, thank you!

It was wrong of me to assume the browser was to blame.

Do you have any views about my other point, though? Is it realistic for me
to hope to use XHTML + XML + XSLT to drive Internet websites at this time?
Are these technologies supported well enough in the main browsers to allow
me to develop with them without having to write masses of extra code in
order to resolve compatibility issues?

I hope you can bear with me until I can clear this up in my head!

Thanks
Hal
 
J

Johannes Koch

Hal said:
My aim is to produce XML-based graphical (showing jpg images and data) and
database-driven websites that are fully functional in both the latest
version of Firefox and IE 6 SP1 onwards.

Why do you want to do the transformation in the browser? It's more
reliable to do it on the server and then deliver HTML instead.
 
A

Andy Dingley

Johannes said:
Why do you want to do the transformation in the browser? It's more
reliable to do it on the server and then deliver HTML instead.

Whether you do XSLT in the server or the browser, it's important to end
up with valid HTML. A bare <html>Foo<br /></html> document is still far
from valid


Client-side XSLT is workable these days, so long as you have adequate
fallbacks for the non-XSLT browsers. I'd tend to do it with an empty
HTML wrapper page and a JavaScript-driven transformation (i.e. AJAX)
though, rather than pure XML + XSLT. Pure XML to the browser has ugly
error behaviour if anything breaks - they're left staring at a dead
screen, they don't even have a link back to the homepage or non-XML
version.
 
M

Magnus Henriksson

Hal said:
Magnus - you beauty! Yes, that worked, thank you!

It was wrong of me to assume the browser was to blame.

Do you have any views about my other point, though? Is it realistic for me
to hope to use XHTML + XML + XSLT to drive Internet websites at this time?
Are these technologies supported well enough in the main browsers to allow
me to develop with them without having to write masses of extra code in
order to resolve compatibility issues?

I hope you can bear with me until I can clear this up in my head!

Thanks
Hal

I would think it's safe for most browsers. On the other hand, there are
very few examples of this in the wild. Considering the level of XML
support in the majority of browsers, I find it odd that it's not used
more. The only reason I can think of is that the cost of not supporting
older browsers is to high. I mean, if you are selling stuff on the web,
you don't want to loose customers based on their choice of browser.

Also, it is fairly simple to generate HTML on the server and send that
to the browser instead. Unless the user really need the XML for
something else than presentation, there is not much to gain.

But the thing is that HTML is served on almost all sites. This many
years after the creation of XML, I would expect at least some personal
homepages to use XML directly. This has not happened; XML never became
SGML for the web, not for presentation purposes anyway.

// Magnus
 
H

Hal

Those are very interesting points - thank you, Johannes and Andy, for your
replies.

Johannes - I would like to use PHP with a PostgreSQL db. Is this a good
combination? Could you explain how I can keep the transformation on the
server? Do you have any tips?

Andy - that sounds exactly what I need, because I would like the website
pages to be quite dynamic, using AJAX to re-sort columns etc. Do you have
any pointers, so that I could read up on this?

Thank you again
Hal
 
H

Hal

Magnus

You have raised some very interesting points, and I thank you for them

My problem is that I don't understand how HTML could be generated on the
server. Would you mind pointing me to some methods of doing this, please?

Again, thank you!
Hal
 
J

Johannes Koch

Hal said:
Johannes - I would like to use PHP with a PostgreSQL db. Is this a good
combination? Could you explain how I can keep the transformation on the
server? Do you have any tips?

If you want to use PHP to do XSLT, then use a search engine with 'php xslt'.
 
M

Magnus Henriksson

Hal said:
My problem is that I don't understand how HTML could be generated on the
server. Would you mind pointing me to some methods of doing this, please?

That all depends on the capabilities of your server and your own
preferences. If it's your own server, you can do whatever you like, ASP.
PHP, Java, dotnet, etc, etc.

Otherwise you need to check what your hosting service provider supports.
Most providers support ASP and/or PHP. If you want to build something
that is reasonably platform independent (say you want to change
provider), then PHP is a safer choice.

// Magnus
 
H

Hal

Hi Magnus

Thank you again for your reply.
PHP5 is supplied on my sharedhosting server, and so this is the language I
will be using.
What I don't understand is how the server translates an XML+XSLT file into
XHTML. Can you tell me what modules should be included in the PHP
configuration in order for me to do this? What should I look for in
phpinfo()?
Thanks
Hal
 
M

Martin Honnen

Hal said:
PHP5 is supplied on my sharedhosting server, and so this is the language I
will be using.
What I don't understand is how the server translates an XML+XSLT file into
XHTML. Can you tell me what modules should be included in the PHP
configuration in order for me to do this? What should I look for in
phpinfo()?

libxslt is needed, see <http://www.php.net/manual/en/ref.xsl.php>.
 
H

Hal

Fantastic, Martin - I have it!

Thank you very much for yours and everyone's help. Although I am obviously
discovering all this a bit late in the day, I am getting very excited about
it.

Sincerely
Hal
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,150
Members
46,697
Latest member
AugustNabo

Latest Threads

Top