04. maj 2010 - 17:37
Der er
5 kommentarer
Hvordan kan jeg se om en dato er imellem 2 datoer ?
Hej Hvordan kan jeg se om 1 dato er imellem 2 datoer? Jeg har et søge resultat der skal formateres, så man kan indtaste 2 datoer også få alle poster imellem. Men kan man gøre dette i xslt 1,0 ?
Annonceindlæg fra NetApp
Hvis felterne indeholder en xsd:date, så er alfabetisk sammenligning jo identisk med tidsmæssig sammenligning, således at helt normal < kan anvendes.
Hejsa Arne Det er jo kun i Schemas det kan benyttes(som jeg mener det), og her skal jeg benytte det i xsl 1.0. jeg har en dato stående i xml som ser sådan ud <Row.Value>08-02-1917</Row.Value> også har jeg de 2 værdier her <Server.Request.qstart>06-13-1927</Server.Request.qstart> <Server.Request.qend>06-27-1927</Server.Request.qend> og jeg synes ikke at kunne få normale identifiers til at virke. Jeg ved ikke om jeg kan kaste værdierne til at virke ?
Det skal gøres gennem en xslt extension, eller også bliver det tricky.. Det kan evt klares inline med C#, men kender ikke dit miljø : xmlns:date="ffs" xmlns:msxsl="urn:schemas-microsoft-com:xslt" <msxsl:script implements-prefix="date" language="C#"> public XPathNodeIterator GetNodes(XPathNodeIterator node, string DateStart, string DateEnd) { // kode som Arne nemt kan skrive :) } </msxsl:script> <xsl:variable name="GyldigeNodes" select="msxml:node-set(date:GetNodes($noder, 'xx-xx-xxxx', 'xx-xx-xxxx'))" /> Skal det gøres gennem xslt alene, kræver det at du omskriver datoen.. Ex <xsl:variable name="gammelXML"> <data> <node dato="12-12-2001"/> <node dato="12-08-1998"/> </data> </xsl:variable> <xsl:variable name="nyXML"> <data> <xsl:foreach select="msxml:node-set($gammelXML)//node"> <xsl:element name="node"> <xsl:attribute name="dato"> <xsl:value-of select="concat(substring-after(substring-after(@dato, '-'), '-'), substring-before(substring-after(@dato, '-'), '-'), substring-before(@dato, '-'))" /> </xsl:attribute> </xsl:element> </xsl:foreach> </data> </xsl:variable> Det skulle gerne vende datoen om til noget mere fornuftigt at søge efter ala: <node dato="20011212" /> <node dato="19980812" /> Det er ikke lige testet, men det er fremgangsmåden. Jeg foretrækker selv at løse gennem xslt extensions, lader til at performe bedre. /J
Jeg ville hellere skifte formatet til standard formatet, så er det nemt at sammenligne - og det som viser XML kan så vende formatet til det ønskede UI format.
ja XMLdates er at foretrække i xml. lette at sammenligne med mm. Ofte er datagrundlaget bare ikke så let at rokke ved, der er sikkert en grund til han ikke blot har ændret. /J
Kurser inden for grundlæggende programmering