Display an existing XML in browser as readable without modifying it.

R

rk

I have the following library.xml file coming from a system, this can't
be modified.
____________________________________________________________________________
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<library>
<book>
<name>
Discover America
</name>
</book>
</library>
____________________________________________________________________________
I need to be able to display the above file in browser in readable
format. Here is the library.xsl.
____________________________________________________________________________
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tns="http://www.ibm.com/websphere/crossworlds/2002/HierarchicalProperties"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<table border="3" bgcolor="white" cellspacing="1" cellpadding="1">
<tr>
<th>Book</th>
</tr>
<xsl:for-each select="library/book">
<td>
<xsl:value-of select="name"/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet
____________________________________________________________________________

How can I present library.xml in readable format in browser without
modifying the xml file itself?

I have come across two options, which don't work.

1) Add <?xml-stylesheet to refer library.xsl in library.xml. This
doesn't work because I don't want to modify library.xml

2) Create a new file libary_read.xml with the following content and
open it in browser.

<!DOCTYPE apage [
<!ENTITY library SYSTEM "library.xml">
]>
<readlibrary>
&library;
</readlibrary>

And modify library.xsl to have <xsl:for-each
select="readlibary/library/book">


When I open this file in InternetExplorer, I get the following error.
________________________________________________________________________
The standalone attribute cannot be used in external entities. Error
processing resource 'file:///C:/Documents and Settings/...

<?xml version="1.0" encoding="utf-8" standalone="no"?>
________________________________________________________________________

I think having standalone="no" in library.xml is forcing me out of this
option. If I remove standalone="no" it works. Since I can't modify
library.xml, this option also gets ruled out.

Regards,
Rajesh Kamisetty
 
D

dhanvanth

How can I present library.xml in readable format in browser without
modifying the xml file itself?

Rajesh,

You could create a new xml file called temp.xml with the following
content
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="library.xsl"?>
<root/>

The above file is just a dummy file, its main purpose being to load the
books.xsl.

Let us suppose that books.xml is the original xml file that you cannot
change.

Change library.xsl to the following stylesheet

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tns="http://www.ibm.com/websphere/crossworlds/2002/HierarchicalProperties"
xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="/">
<xsl:apply-templates select="document('books.xml')/library" />
</xsl:template>

<xsl:template match="library">
<html>
<head>
</head>
<body>
<table border="3" bgcolor="white" cellspacing="1" cellpadding="1">
<tr>
<th>Book</th>
</tr>
<tr>
<xsl:for-each select="./book">
<td>
<xsl:value-of select="name"/>
</td>
</xsl:for-each>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

So, you will have three files

1)temp.xml - The dummy file to load the stylesheet.
2)books.xml - The original file you cannot change
3)library.xsl - The stylesheet that displays the table

Opening temp.xml in a browser will give you the required output.

-Dhanvanth
 
J

Joe Kesselman

Opening temp.xml in a browser will give you the required output.

Note that this end-run shouldn't be necessary -- browsers *SHOULD* let
the user mix source document and stylesheet arbitrarily to suit their
own needs -- but unfortunately browser authors haven't caught up with
this improved architecture yet.

Pester whoever wrote yours, telling them you want this feature.
 

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,764
Messages
2,569,565
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top