Subject: RE: [xsl] Getting useful data from this XML From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 27 Apr 2005 11:02:11 +0100 |
They call this an XML feed? I struggled with this at first, until I realized that they have not only committed the crime of escaping the nested markup so that < is written as <, they have actually double-escaped it so that it is written as &lt; This must be the most perverse XML document I have seen for a long time. Using disable-output-escaping will compensate for a single level of unnecessary escaping in the input, but it won't compensate for two levels. If your project allows you to use Saxon, I would suggest <p>1) <xsl:value-of select="saxon:parse(concat('<d>', @description, '</d>'))" disable-output-escaping="yes" xmlns:saxon="http://saxon.sf.net/"/></p> which does the trick. Horrible input sometimes demands a horrible stylesheet. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: G.Wenden@xxxxxxxxxxxxxxx [mailto:G.Wenden@xxxxxxxxxxxxxxx] > Sent: 27 April 2005 10:15 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Getting useful data from this XML > > I'm trying to write an xsl that will allow me to show whether > there are any problems on our local rail lines. The train > company provide an XML feed but I'm having trouble getting > any useful data out of it. > I've tried a couple of different approaches but the data that > comes out has HTML tags that are displayed rather than used. > > Thanks, > > Greg > > Here is an example XML file > > <?xml version="1.0" encoding="iso-8859-1" ?> <?xml-stylesheet > type="text/xsl" href="new.xsl"?> > <!-- > Number of disruption/incidents : 'num_incidents' attrbute. > Where there are no disruptions, we recommend that you simply > state: 'Services running normally.' > --> > <!DOCTYPE merseyrail [ > <!ELEMENT merseyrail (incident?)> > <!ATTLIST merseyrail num_incidents CDATA "0"> <!ELEMENT > incident (EMPTY)> <!ATTLIST incident description CDATA > #IMPLIED> <!ATTLIST incident details_url CDATA #IMPLIED> ]> > <merseyrail num_incidents='1'> <incident description="09.15 > &lt;B&gt;Chester&lt;/B&gt; to > &lt;B&gt;Liverpool&lt;/B&gt; will start at > &lt;B&gt;Hooton&lt;/B&gt;." > details_url="&lt;a > href=&quot;http://www.merseyrail.org/travelling/?sSrc=& > ;sGUID=59d620a61d0ba0dd29dc0c4cebefce81&id=1647&lt;/a& > amp;gt;" /> </merseyrail> > > And here is the xsl that I have written. > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format"> > <xsl:output method="html"/> > <xsl:template match="/"> > <html> > <head> > <title>Merseyrail Service > Announcement</title> > </head> > <body> > <xsl:for-each select="merseyrail/incident"> > <xsl:if test="position()=1"> > <h1>Merseyrail services are NOT running normally.</h1> > </xsl:if> > > <p>1) <xsl:value-of select="@description" > disable-output-escaping="yes"/></p> > <p>2) <xsl:value-of select="@description" /></p> > <p>3) <xsl:value-of select="@details_url" > disable-output-escaping="yes"/></p> > </xsl:for-each> > > <xsl:for-each select="merseyrail[@num_incidents='0']"> > <h1>Merseyrail services are running normally.</h1> > </xsl:for-each> > > <p> This information is taken from <a > href="http://www.merseyrail.org">www.merseyrail.org</a></p> > </body> > </html> > </xsl:template> > </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Getting useful data from this, G.Wenden@xxxxxxxxxxx | Thread | Re: [xsl] Getting useful data from , David Carlisle |
RE: [xsl] XSLT to conver flat XML t, Mukul Gandhi | Date | Re: [xsl] Getting useful data from , David Carlisle |
Month |