[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Xml file in an Xml file
You need to extract the embedded XML document as text and parse it. With Saxon you can do this using saxon:parse(). With other processors you may be able to call an extension function. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Danny Leblanc [mailto:leblancd@xxxxxxxxxxxxxxxxxxx] > Sent: 04 April 2007 17:07 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Xml file in an Xml file > > > Hello everyone. > > Using web services I am getting the following XML file > returned to me. > > <S:Envelope > xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:XS="http://www.w3.org/2001/XMLSchema" > xmlns:XI="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:a="http://www.webserviceX.NET"><S:Body><a:GetWeatherResp > onse><a:GetWeatherResult XI:type="XS:string"><?xml > version="1.0" encoding="utf-16"?> > <CurrentWeather> > <Location>Montreal / Pierre Elliot Trudeau > International Airport, Que, Canada (CYUL) 45-28N 073-45W > 36M</Location> > <Time>Apr 04, 2007 - 11:00 AM EDT / 2007.04.04 1500 > UTC</Time> > <Wind> from the ESE (120 degrees) at 15 MPH (13 KT) > gusting to 28 MPH (24 KT):0</Wind> > <Visibility> 6 mile(s):0</Visibility> > <SkyConditions> overcast</SkyConditions> > <Temperature> 37 F (3 C)</Temperature> > <DewPoint> 33 F (1 C)</DewPoint> > <RelativeHumidity> 86%</RelativeHumidity> > <Pressure> 29.79 in. Hg (1008 hPa)</Pressure> > <Status>Success</Status> > </CurrentWeather></a:GetWeatherResult></a:GetWeatherResp > onse></S:Body></S:Envelope> > > What I would like to do is "yank out" the second Xml file > that is contained at > S:Envelope/S:body/a:GetWeatherResponse/a:GetWeatherResult. > > I tried the following Xslt code using the latest Altova engine > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:XS="http://www.w3.org/2001/XMLSchema" > xmlns:XI="http://www.w3.org/2001/XMLSchema-instance" > xmlns:a="http://www.webserviceX.NET"> > <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> > > <xsl:template match="/"> > <NewRoot> > <xsl:value-of > select="/S:Envelope/S:Body/a:GetWeatherResponse/a:GetWeatherResult"/> > </NewRoot> > </xsl:template> > > <xsl:template match="@*|node()"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > What I get back is > > <?xml version="1.0" encoding="UTF-8"?> > <NewRoot xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:XI="http://www.w3.org/2001/XMLSchema-instance" > xmlns:XS="http://www.w3.org/2001/XMLSchema" > xmlns:a="http://www.webserviceX.NET"><?xml version="1.0" > encoding="utf-16"?> <CurrentWeather> > <Location>Montreal / Pierre Elliot Trudeau > International Airport, Que, Canada (CYUL) 45-28N 073-45W > 36M</Location> > <Time>Apr 04, 2007 - 11:00 AM EDT / 2007.04.04 1500 > UTC</Time> > <Wind> from the ESE (120 degrees) at 15 MPH (13 KT) > gusting to 28 MPH (24 KT):0</Wind> > <Visibility> 6 mile(s):0</Visibility> > <SkyConditions> overcast</SkyConditions> > <Temperature> 37 F (3 C)</Temperature> > <DewPoint> 33 F (1 C)</DewPoint> > <RelativeHumidity> 86%</RelativeHumidity> > <Pressure> 29.79 in. Hg (1008 hPa)</Pressure> > <Status>Success</Status> > </CurrentWeather></NewRoot> > > What I would actually like to be returned is a true XML > file where I could access all the nodes using Xpath, not a > "parsed out" version of the file. > > For example > > <?xml version="1.0" encoding="utf-8" ?> > <NewRoot> > <CurrentWeather> > <Location>Montreal / Pierre Elliot Trudeau International > Airport, Que, Canada (CYUL) 45-28N 073-45W 36M</Location> > <Time>Apr 04, 2007 - 11:00 AM EDT / 2007.04.04 1500 UTC</Time> > <Wind>from the ESE (120 degrees) at 15 MPH (13 KT) gusting > to 28 MPH (24 KT):0</Wind> > <Visibility>6 mile(s):0</Visibility> > <SkyConditions>overcast</SkyConditions> > <Temperature>37 F (3 C)</Temperature> > <DewPoint>33 F (1 C)</DewPoint> > <RelativeHumidity>86%</RelativeHumidity> > <Pressure>29.79 in. Hg (1008 hPa)</Pressure> > <Status>Success</Status> > </CurrentWeather> > </NewRoot> > > There are a few differences that I would also like, I don't > need the namespace declarations. Is there anyway to do this > using xslt or am I dreaming? > > Thanks in advance.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|