XMLXSLNummer och datum
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunderna XSL Dynamiska sidor XML i praktiken

Nummer och datum

Exempelfilen

xml29_1.xml

<?xml version="1.0" encoding="iso-8859-1" ?> 

<!DOCTYPE formattest [
   <!ELEMENT formattest (data)* >
   <!ELEMENT data (number, date) >
   <!ELEMENT number (#PCDATA)>
   <!ELEMENT date (#PCDATA)>
]>
<formattest>
   <data>
     <number>789</number>
     <date>12.3.2001</date>
   </data>
   <data>
     <number>123456789</number>
     <date>12.3.2001</date>
   </data>
</formattest>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

 

Nummer formatering enligt XSL standarden

Kräver:

  • IE 6.0 eller nyare eller
  • IE 5.5 med MXSML i replace mode
  • http://www.w3.org/1999/XSL/Transform specifikationen

xml29_2.xsl

<?xml version='1.0' encoding="iso-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!-- 
   om vi inte specificerar datumsymbolerna
   kommer xsl att vilja ha #,##0.0 -
   dvs. punkt som decimaltecken och
   komma som tusenseparator.
   För att får detta kan vi skapa ett
   eget nummerformat
-->

<xsl:decimal-format
   name="finsk_standard"
   decimal-separator=","
   grouping-separator="." />

   <xsl:template match="/">
   <html>
     <head><title>Nummer</title></head>
     <body bgcolor="#FFFFFF" text="#000000">
  
     <xsl:for-each select="formattest/data">
       <xsl:value-of
         select="format-number(
           number ,
           '#.##0,00',
           'finsk_standard')"
         /><br />

       <xsl:value-of select="date"/><br /><br />

     </xsl:for-each>

     </body>
   </html>
   </xsl:template>

</xsl:stylesheet>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

(Nedanstående länkar kommer inte att fungera om du inte har IE 6.x.
De bombar inte men det händer inte heller någonting)

Öppna XML filen   Öppna XML konverterad till HTML (Även NS)

Formatering enligt äldre MS standard

Kräver:

  • Microsoft IE 5.0 eller nyare

xml29_3.xsl

<?xml version='1.0' encoding="iso-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<!-- 
   Microsoft specifik lösning på
   nummerformatering
-->

   <xsl:template match="/">
   <html>
     <head><title>Nummer</title></head>
     <body bgcolor="#FFFFFF" text="#000000">
  
     <xsl:for-each select="formattest/data">

       <xsl:apply-templates select="number" />
       <xsl:value-of select="date"/><br /><br />

     </xsl:for-each>

     </body>
   </html>
   </xsl:template>

   <xsl:template match="number">
     <!-- 
       detta är samma formatNumner som
       ni kanske använt i VB
       xsl:eval utvärderar scriptkod
       this.nodeTypedValue ger ger
       värdet för aktuell nod
       Observera stavningen. Det finns ett
       "d" i nodeTypedValue
     -->

     <xsl:eval>
       formatNumber( this.nodeTypedValue ,'#,##0.00')
     </xsl:eval>
     <br />
   </xsl:template>

</xsl:stylesheet>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

Öppna XML filen   Öppna XML konverterad till HTML (Även NS)

Har du inte glömt datum nu?

Jo, med det har alla andra också. Det finns inte ett bra sätta att hantera datum i XSL (Varför är jag inte förvånad?). Gör istället följande för att kunna hantera datumen:

xml29_4.xml

<?xml version="1.0" encoding="iso-8859-1" ?> 
<!DOCTYPE formattest [
   <!ELEMENT formattest (data)* >
   <!ELEMENT data (number, date) >
   <!ELEMENT number (#PCDATA)>
   <!ELEMENT date (day, month, year)>
   <!ELEMENT day (#PCDATA)>
   <!ELEMENT month (#PCDATA)>
   <!ELEMENT year (#PCDATA)>
]>
<formattest>
   <data>
     <number>789</number>
     <date>
       <day>12</day>
       <month>10</month>
       <year>2001</year>
     </date>
   </data>
   <data>
     <number>123456789</number>
     <date>
       <day>12</day>
       <month>3</month>
       <year>2000</year>
     </date>

   </data>
</formattest>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

Det är sedan enket att få vilket datumformat som helst genom att plocka in day, month och year i den ordning man vill ha dem.

  Microsofts lösningTypexempel för XSL
XSL
XSL i praktiken
XSL loopar
XSL programmering
XSL patterns
Patterns exempel
Programkoden
xsl:if
xsl:choose
xsl:for-each
xsl:apply-templates
XSL Övningar
XML versioner
Microsofts lösning
Nummer och datum
Typexempel för XSL ...


Top
< Microsofts lösning Typexempel för XSL>
© Anders Enges, Vörå 2002  | 15.10.01 14:10 Visa asp koden