Subject: RE: Problems transforming a <A HREF> link using XSL
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 18 Nov 2005 17:59:38 -0000
|
Try <xsl:copy-of select="child::node()"/>
to copy the children of the context node without copying the context node
itself - i.e. to copy the contents without the surrounding tags.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Allison Bloodworth [mailto:abloodworth@xxxxxxxxxxxx]
> Sent: 18 November 2005 17:17
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Problems transforming a <A HREF> link using XSL
>
> Thanks very much for responding, Michael. However,
> xsl:copy-of gives me
> this:
>
> Gametracker: <gametracker>
> <a
> href="JavaScript:window.open('http://livestats.calbears.colleg
> esports.com/li
> vestats/data/m-baskbl/353109/','mbaskblGameTracker','toolbar=n
> o,resizable=no
> ,scrollbars=no,width=780,height=540'); void('');">Gametracker</a>
> </gametracker>
>
> And I want this:
>
> Gametracker:
> <a
> href="JavaScript:window.open('http://livestats.calbears.colleg
> esports.com/li
> vestats/data/m-baskbl/353109/','mbaskblGameTracker','toolbar=n
> o,resizable=no
> ,scrollbars=no,width=780,height=540'); void('');">Gametracker</a>
>
> (e.g. I don't want the <gametracker> tags around my link)
>
> I was able to do what you suggested with copy of if I target
> the <a> tag.
> However, I can't assume that the Gametracker tag will always
> include just
> the <a> tag.
>
> <xsl:template match="gametracker">
> <xsl:if test="normalize-space(.)">
> Gametracker: <xsl:copy-of select="a"/>
> </xsl:if>
> </xsl:template>
>
> If you want to copy HTML content inside an XML tag and don't
> know exactly
> what it is, is this not possible?
>
> Also, if there is a better way to use an XSL to do datatype
> testing on the
> contents of a node (hopefully using XPath 1.0, since I can't
> use XML Spy on
> a stylesheet with "castable"...thank goodness for Saxonica!),
> I'd love to
> hear of it. Right now this is what I'm doing:
>
> <xsl:if test="string(.) castable as xs:time">
> <StartTime>
> <xsl:value-of select="."/>
>
> </StartTime>
> </xsl:if>
>
> Thanks again!
> Allison
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: Friday, November 18, 2005 1:09 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Problems transforming a <A HREF> link using XSL
>
> You want <xsl:copy-of> rather than <xsl:value-of>.
>
> Michael Kay
> http://www.saxonica.com/
>
> > -----Original Message-----
> > From: Allison Bloodworth [mailto:abloodworth@xxxxxxxxxxxx]
> > Sent: 18 November 2005 02:04
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Problems transforming a <A HREF> link using XSL
> >
> > Hi,
> >
> > I am trying to transform an XML document, which includes
> some HTML <a
> > href=.> links, into another XML document. However, when I do the
> > transformation, the <a href=..>Name of link</a> info is lost
> > and all I see
> > is the name of the link. I've tried using output methods of
> > "xml" "html" and
> > "text" to no avail. Does anyone know how to fix this problem?
> >
> > <?xml-stylesheet type="text/xsl" href="Sports.xsl"?>
> > <feed>
> > <update_stamp>11/10/2005 08:14:47</update_stamp>
> > <event>
> > <id>472691</id>
> > <date>12/03/2005</date>
> > <time>1:00 PM</time>
> > <sport>w-baskbl</sport>
> > <sport_name>W Basketball</sport_name>
> > <opponent><![CDATA[UNLV vs. Albany (CC Times
> > Classic)]]></opponent>
> > <location><![CDATA[Berkeley]]></location>
> > <tv></tv>
> > <home_visitor>H</home_visitor>
> > <outcome><![CDATA[]]></outcome>
> > <recap></recap>
> > <stats></stats>
> > <notes></notes>
> > <quotes></quotes>
> > <gallery></gallery>
> > <gametracker><a
> > href="JavaScript:window.open('http://livestats.calbears.colleg
> > esports.com/li
> > vestats/data/w-baskbl/354046/','wbaskblGameTracker','toolbar=n
> o,resizable=no
> > ,scrollbars=no,width=780,height=540');
> > void('');">Gametracker</a></gametracker>
> > </event>
> > </feed>
> >
> > Top of XSL stylesheet:
> > <?xml version="1.0"?>
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > xmlns:dt="http://xsltsl.org/date-time">
> > <xsl:import
> href="http://xsltsl.sourceforge.net/modules/stdlib.xsl"/>
> > <xsl:output method="xml" indent="yes"/>
> >
> > Pertinent portion of stylesheet (I test to see if the element
> > exists before
> > I print it):
> >
> > <xsl:template match="gametracker">
> > <xsl:if test="normalize-space(.)">
> > Gametracker: <xsl:value-of select="."/>
> > </xsl:if>
> > </xsl:template>
> >
> > I want this in the resultant XML file:
> > <Description>
> > Gametracker: <a
> > href="JavaScript:window.open('http://livestats.calbears.colleg
> > esports.com/li
> > vestats/data/w-baskbl/354046/','wbaskblGameTracker','toolbar=n
> o,resizable=no
> > ,scrollbars=no,width=780,height=540'); void('');">Gametracker</a>
> > </Description>
> >
> > But I get this:
> >
> > <Description>
> > Gametracker: Gametracker
> > </Description>
> >
> > Thanks very much for any help you can give me!
> >
> > Allison Bloodworth
> > Principal Administrative Analyst
> > e-Berkeley Program Office
> > University of California, Berkeley
> > (415) 377-8243
> > abloodworth@xxxxxxxxxxxx
|