This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XPath weirdness!!
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] XPath weirdness!!
- From: "Julian Reschke" <julian dot reschke at gmx dot de>
- Date: Wed, 25 Jul 2001 21:12:26 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
The following XSLT code should do what you need:
<MULTIPOINT>
<xsl:for-each select="/Query/SpatialQuery/Buffer/Point">
<POINT x="{@y}" x="{@y}" />
</xsl:for-each>
</MULTIPOINT>
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Kris
> Kolodziej
> Sent: Wednesday, July 25, 2001 8:02 PM
> To: xsl-list@lists.mulberrytech.com
> Subject: Re: [xsl] XPath weirdness!!
>
>
> OK. I hope I can be more clear with this email.
>
> Here is part of my XML source:
> <Query>
> <SpatialQuery>
> <Buffer distance="100" units="miles">
> <Point x="-122.5281" y="37.635" />
> <Point x="-122.4521" y="37.700" />
> <Point x="-122.4000" y="37.750" />
> <Point x="-122.3100" y="37.820" />
> </Buffer>
> </SpatialQuery>
> </Query>
>
> I want this part of the output to be:
> <MULTIPOINT>
> <POINT x="-122.5281" y="37.635" />
> <POINT x="-122.4521" y="37.700" />
> <POINT x="-122.4000" y="37.750" />
> <POINT x="-122.3100" y="37.820" />
> </MULTIPOINT>
>
>
> This is part of the XSL that I am using to transform the above:
> <xsl:when test="//SpatialQuery/Buffer">
> <!-- I need the "//" to get back the <MULTIPOINT> and <POINT> tags -->
> <MULTIPOINT>
> <xsl:for-each select="//Point">
> <POINT>
> <xsl:attribute name="x">
> <xsl:value-of select="//@x"/> <!--
> THIS GIVES ME THE "X" values -->
> </xsl:attribute>
> <xsl:attribute name="y">
> <xsl:value-of select="/@y"/> <!-- HERE IF I USE
> "//@y" I GET THE "
>
> &x#3c" ERROR -->
> </xsl:attribute>
> </POINT>
> </xsl:for-each>
> </MULTIPOINT>
> </xsl:when>
>
>
> Julian Reschke wrote:
>
> > I'm not sure what the problem that reported is... But:
> >
> > *why* are you using the // syntax at all?
> >
> > "//@y" finds *all* attributes named "y" in the document, and
> then returns
> > the text value of the first one (AFAIK). Is this *really* what you want?
> >
> > If you clearly describe what you source format is and which
> output you need,
> > people on the list will be able to suggest much better (and faster) XSLT
> > code...
> >
> > > -----Original Message-----
> > > From: owner-xsl-list@lists.mulberrytech.com
> > > [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Kris
> > > Kolodziej
> > > Sent: Wednesday, July 25, 2001 7:14 PM
> > > To: xsl-list@lists.mulberrytech.com
> > > Subject: [xsl] XPath weirdness!!
> > >
> > >
> > > This is related to my previous problem with the "&x#3c." So I figured
> > > out that I was doing something wrong with the XPath
> locations...However,
> > > now I am experiencing some weird things with XPath. Take the following
> > > example for instance:
> > >
> > > This works but it only give me the "x" value (and I sure do
> want to get
> > > both x AND y).
> > > Notice that for "y" I only have "/@y". This is because when I do the
> > > same thing as I did for "x" (meaning writing "<xsl:value-of
> > > select="//@y"/>" ) I get the "&x#3c" error!!! WHY??!
> > >
> > >
> > > <xsl:when test="//SpatialQuery/Buffer">
> > > <MULTIPOINT>
> > > <xsl:for-each select="//Point">
> > > <POINT>
> > > <xsl:attribute name="x">
> > > <xsl:value-of select="//@x"/>
> > > </xsl:attribute>
> > > <xsl:attribute name="y">
> > > <xsl:value-of select="/@y"/>
> > > </xsl:attribute>
> > > </POINT>
> > > </xsl:for-each>
> > > </MULTIPOINT>
> > >
> > >
> > > It also works when I do the vice versa of what I have ("/@x"
> and "//@y")
> > > but I can't have it written the same way.
> > >
> > >
> > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
> > >
> >
> > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list