webForumDet fria alternativet

Sortera värden ifrån xml

XML

9 svar · 340 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Vill sortera så att man får ut så att man visar data i multiRef med lägst id först, hur kan man göra detta?

<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>
Medlem sedan juni 200032 967 inlägg
#2

Med xsl? <xsl:sort> brukar funka bra för mig, men jag hoppas att dina ID:n inte har värdena id5 och id29.

Medlem sedan nov. 20022 355 inlägg
#3

tyvärr har de det :(

Missade det, ja med xsl!

Om inte sort går på strängar då, kan man ta <item> kollar href valuet och sdean hämta respective multiRef med överenstämmande id?

Hur kan det se ut i xsl?

Medlem sedan juni 200032 967 inlägg
#4

Jo, sort fungerar med strängar. :)

Jag hade försökt mig på något sånt härnt:

<xsl:apply-templates select="multiRef">
<xsl:sort select="ID"/>
<xsl:apply-templates>

Sug lite på denna länk också: http://www.xml.com/pub/a/2002/07/03/transform.html

Mvh

Medlem sedan nov. 20022 355 inlägg
#5

Tackar :)

Medlem sedan nov. 20022 355 inlägg
#6

r:bör kanske tänka till innan man skriver en fråga.... :OO

Medlem sedan nov. 20022 355 inlägg
#7

man kanske kan parsa bort, bokstäverna i id'et?
eller det kanske finns en datatyp som heter date?

Medlem sedan nov. 20022 355 inlägg
#8

provade t ex denna men får det inte att fungera

<xsl:template match="multiRef ">
    <xsl:apply-templates>
      <xsl:sort select="substring(date , 1,4)" data-type="number"/>
      <xsl:sort select="substring(date , 5,2)" data-type="number"/>
      <xsl:sort select="substring(date , 7,2)" data-type="number"/>
    </xsl:apply-templates>

  <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>

även denna fungerar ej:

<xsl:sort select="substring(id , 3,2)" data-type="number"/>
Medlem sedan nov. 20022 355 inlägg
#9

ingen som har koll, jag antar att jag måste ha sorten utanför multiRef men jag får inte det att fungera, den sorterar inte alls då det blir olika resultat varje gång!

Medlem sedan nov. 20022 355 inlägg
#10

OK, antar att det var problem med strukturen, då menar jag de taggar av typen soapenv:
Tog och först skapade en xsl som tog ut endast multiref och skapade en ny xml fil, som jag sedan använde en annan xsl fil för sortering...
Kanske inte den bästa lösningen men den fungerar! :)

249 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)