XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Tom PattersonSubject: XSLT and Entities
Author: Tom Patterson
Date: 23 Sep 2004 02:09 PM
Originally Posted: 23 Sep 2004 02:08 PM
I am trying to create an xslt to convert an xml document to html. The top of the xml document has something along the lines of <!DOCTYPE dmodule PUBLIC "..." [<!ENTITY picent SYSTEM "picture.cgm" NDATA cgm>. Then when the picture is to be used, there is a tag <graphic boardno="picent">. I want to be able to convert this to html using the <img> tag (even tho I'm pretty sure that it doesn't support cgm graphics), but I can't figure out how to convert the SYSTEM "picture.cgm" into a file name for the src. Any ideas? Thanks.

Postnext
Ivan PedruzziSubject: XSLT and Entities
Author: Ivan Pedruzzi
Date: 24 Sep 2004 11:27 AM
Hi Tom,

Send a snip of the xml document i will show you a working example

Ivan

Postnext
Tom PattersonSubject: XSLT and Entities
Author: Tom Patterson
Date: 24 Sep 2004 12:57 PM
Thank you very much, this has been driving me nuts for a while. I can map the <graphic> element into a <img> element without any problems, I just can't figure out how to convert the entity to the src.


Documentent_examp.xml

Postnext
(Deleted User) Subject: XSLT and Entities
Author: (Deleted User)
Date: 27 Sep 2004 11:05 AM
Hi Tom,
you should use this instruction to get the file name associated with
the unparsed entity (assuming you have the "graphic" node as the
current context):

<xsl:value-of select="unparsed-entity-uri(@boardno)"/>

Please note that the attribute has a lower case string, while the
entity is defined using uppercase characters; the XML should be fixed
to have the same string in the entity definition.

Hope this helps,
Alberto

Postnext
Ivan PedruzziSubject: XSLT and Entities
Author: Ivan Pedruzzi
Date: 27 Sep 2004 12:48 PM
Hi Tom,

Here is a example based on Alby suggestion

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="dmodule/content/descript/para0/figure/graphic"/>
</body>
</html>
</xsl:template>

<xsl:template match="graphic">
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="unparsed-entity-uri(@boardno)"/>
</xsl:attribute>
</xsl:element>
</xsl:template>

</xsl:stylesheet>

Postnext
Tom PattersonSubject: XSLT and Entities
Author: Tom Patterson
Date: 28 Sep 2004 08:16 AM
I tried this, but everytime instead of getting an <img src="ICN-AE-A-000000-0-U8025-00536-A-01-1.cgm"> I get <img src="ICN-AE-A-000000-0-U8025-00536-A-01-1">. It doesn't matter if I fix the capitalization or not. I tried changing the file name to something else (like test.cgm), but it still gave the <img src="ICN-AE-A-000000-0-U8025-00536-A-01-1">. Any other ideas?

Postnext
(Deleted User) Subject: XSLT and Entities
Author: (Deleted User)
Date: 28 Sep 2004 04:14 PM
Hi Tom,
when I run the stylesheet that Ivan wrote, against the XML you attached
with the "graphic" element changed in this way

<graphic boardno="ICN-AE-A-000000-0-U8025-00536-A-01-1" ...>

I get this result:

<html><body><img src="file://c:\testcase\ICN-AE-A-000000-0-U8025-00536-A-01-1.cgm"></body></html>

Can you post the stylesheet you are using? Also, what is your version
of Stylus?

Alberto

Postnext
Tom PattersonSubject: XSLT and Entities
Author: Tom Patterson
Date: 29 Sep 2004 08:35 AM
Ok, now I feel stupid. I tried to make a tiny style sheet so I didn't have to send the big one and it worked. When I looked back at the other one I somehow managed to miss the unparsed function. I have one more question though. Is there anyway to tell what type of file it is? Like grab the very last part of th entity declaration? It wouldn't cause too much problems, but sometimes I have jpegs and others I have cgms and Web Browsers don't have native support for cgms used in the img tag.

Postnext
(Deleted User) Subject: XSLT and Entities
Author: (Deleted User)
Date: 29 Sep 2004 09:01 AM
Hi Tom,
the unparsed-entity-uri function returns a string, so you can inspect it
using contains() or substring-after() to detect the extension of the
graphic file.

You can change the template to be something like this

<xsl:template match="graphic">
<xsl:if test="contains(unparsed-entity-uri(@boardno),'.cgm')">
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="unparsed-entity-uri(@boardno)"/>
</xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>

Alberto

Posttop
Tom PattersonSubject: XSLT and Entities
Author: Tom Patterson
Date: 29 Sep 2004 12:08 PM
Awesome. Thanks a lot guys. I have one more question, but it isn't really for this group so I was hoping someone may be able to push me in the right direction as far as where to look. I am able to display cgm graphic files in a web browser using a plugin and stuff, but I'm not real familiar with cgms and there are external "hotspots" that refer to places on the cgm. Does anybody now how or a place to look to find out how to get these links to work for the cgm using html/javascript/any other language that can be interpreted by a web browser?

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.