webForumDet fria alternativet

formatera xml data med xsl

5 svar · 378 visningar · startad av Mc Fetto

Mc FettoMedlem sedan nov. 20022 355 inlägg
#1

har följande i en xml/soap fil

<search-results xmlns:xsp="http://apache.org/xsp" xmlns:xscript="http://apache.org/xsp/xscript/1.0" xmlns:soap="http://apache.org/xsp/soap/3.0" xmlns:xsp-request="http://apache.org/xsp/request/2.0">
	<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
		<soapenv:Body>
			<ns1:getAllNewsFromGroupResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:source">
				<getAllNewsFromGroupReturn xsi:type="ns2:ArrayOf_tns2_News" soapenc:arrayType="ns3:News[2]" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="urn:source" xmlns:ns3="http://source" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">>
					<item href="#id5"/>
					<item href="#id29"/>
				</getAllNewsFromGroupReturn>
			</ns1:getAllNewsFromGroupResponse>
			<multiRef id="id29" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns4:News" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://source">
				<date xsi:type="ns5:string" xmlns:ns5="http://www.w3.org/2001/XMLSchema">20031203</date>
				<intro xsi:type="ns6:string" xmlns:ns6="http://www.w3.org/2001/XMLSchema">Vordel is now offering a free tool for testing of security in Web Services solutions.[url]http://www.vordel.com/soapbox/[/url]</intro>
				<text xsi:type="ns7:string" xmlns:ns7="http://www.w3.org/2001/XMLSchema"></text>
				<title xsi:type="ns8:string" xmlns:ns8="http://www.w3.org/2001/XMLSchema">Testing tool for WS security</title>
			</multiRef>
			<multiRef id="id5" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns9:News" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns9="http://source" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
				<date xsi:type="ns10:string" xmlns:ns10="http://www.w3.org/2001/XMLSchema">20040324</date>
				<intro xsi:type="ns11:string" xmlns:ns11="http://www.w3.org/2001/XMLSchema">WRQ, Inc. showed its support of Microsoft Visual Studio .NET 2003 by joining the Visual Studio Industry Partner (VSIP) program. Participating in the VSIP program enables developers to access legacy components exposed by WRQ Verastream directly through Visual Studio .NET 2003, WRQ says. In addition, WRQ Verastream will support the upcoming Microsoft Visual Studio 2005, WRQ notes.[url]http://www.ebizq.net/news/4062.html?pp=1[/url]</intro>
				<text xsi:type="ns12:string" xmlns:ns12="http://www.w3.org/2001/XMLSchema"></text>
				<title xsi:type="ns13:string" xmlns:ns13="http://www.w3.org/2001/XMLSchema">WRQ supports Visual Studio .NET</title>
			</multiRef>
		</soapenv:Body>
	</soapenv:Envelope>
</search-results>

Varje multiref objekt vill jag skriva ut alla underellement (title, date, intro, text)? Vill sedan kunna göra olika foramteringar på varje rad!

Så här ser min xsl fil ut (inget mer än grunden till html dokumentet. Jag förstår inte hur jag kommer åt datan i multiref!

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<!-- Match The Root Node -->
	<xsl:template match="/">
		<HTML>
			<HEAD>
				<TITLE>WSCC News</TITLE>
			</HEAD>
			<BODY>
				<h1 align="center">All the news</h1>
				<ol>
					<xsl:apply-templates select="search-results"/>
				</ol>
			</BODY>
		</HTML>
	</xsl:template>
	<xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
		<xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
	</xsl:template>
</xsl:stylesheet>
Mc FettoMedlem sedan nov. 20022 355 inlägg
#2

ingen?
Jag försöker med följande:

<xsl:template match="item">
    <li>
	
       <xsl:value-of select="href"/>

        <br/>
        
    </li>
</xsl:template>

men då får jag endast ut li * antalet items där finns men inget mer!
R: att få ut href var ett test men det fungerade inte det heller, vill som sagt få ut värdena inuti multiref!

jarvkloMedlem sedan juli 20013 378 inlägg
#3

Hmm...

Har du möjlighet att lägga ut en länk till en "skarp" (komplett) xml/soap-fil så att man kan testa lite och se vart det leder?

Mc FettoMedlem sedan nov. 20022 355 inlägg
#4

jag har saxat det ifrån en soapmonitor tidigare.. kan möjligen slänga iväg en fil imorn, när det är uppe och snurrar. Men problemet är detsamma även om det är mer data.

jarvkloMedlem sedan juli 20013 378 inlägg
#5

Såklart - men har man en komplett fil kan man använda de XML/XSLT-verktyg som finns till att testa ev. lösningsförslag innan man postar det här - vilket ökar "risken" att de verkligen fungerar till slut ;)

Arbetsgången att rekommendera är väl annars (om du inte skall sortera eller arrangera om datat så mycket) att lägga upp en mall för varje tagg du kan tänka dig att plocka ut data ur, och sedan antingen selektera direkt från "barnen" i dessa mallar eller köra en ny apply-templates för de barn du har egna templates för...

exempel:

<xsl:template match="multiRef">
  <h1><xsl:value-of select="title"/></h1>
  <i><b>Datum:</b> <xsl:value-of select="date"/></i>
  <p><b><xsl:value-of select="intro"/></b></p>
  <div><xsl:value-of select="text"/></div>
</xsl:template>

ungefär (men, som sagt, otestat ;)

BTW - Testa att selektera på "@href" i ditt andra exempel eftersom du ju är ute efter ett attributvärde ;)

Mc FettoMedlem sedan nov. 20022 355 inlägg
#6

Jadu så lite kunde man om xsl....
ett litet futtigt @ ;)

Är det ngn som har en bra tutorial över xsl på nätet?

R: använder just nu Xselerator, men trial på denne går snart ut, finns det ngt bra gratis verktyg för att detta ändamål?

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)