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: Kris Kolodziej <kkolodziej at syncline dot com>
- Date: Wed, 25 Jul 2001 14:02:29 -0400
- Organization: Syncline, Inc.
- References: <JIEGINCHMLABHJBIGKBCAELJCLAA.julian.reschke@gmx.de>
- Reply-To: xsl-list at lists dot mulberrytech dot com
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