DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Andreas Rauch Artikel Drucken
        
Listen nach eignen Geschmack - Auflistungen mit XSL

Immer wieder das gleiche. Da denkt man nun hat XML und XSL alles was man braucht und nun möchte man Datensätze ordentlich auflisten, mit Nummerierung usw.. Aber wie? Logisch XSL. Der dementsprechende Befehl lautet:

<xsl:number>

Aus unserem XML File suchen wir die zu listenden Werte via einem template aus. Unsere Aufzählungszeichen können entweder numerisch (1., 2.) oder alphabetisch  (A., B.) sein.

So nun wollen wir das ganze noch nach unseren eigenen Willen formatieren.
Das erledigt für uns das Attribut:

<xsl:number format="" grouping-separator=""  grouping-size=""  >

also...

Format
format="1." oder format="A.". Dabei ist es so ziemlich egal, was nach "1" oder "A" kommt, also etwas in der Art "1.)" oder "A--". Sofern man ungültige Zeichen eingibt, stellt sich automatisch die Formatierung auf numerisch um.

Sonderzeichen
Sonderzeichen hingegen haben zumindest in der MS Welt ihr eigenes Leben. Aus ein format="@" wird in der Liste: @1@. Das heißt, das angebene Format umschließt die Nummerierung.
Möchte man führende Nullen haben, so formatieren wir wie folgt:
format="01."

Trennzeichen

<xsl:number  grouping-separator=""  grouping-size=""    format="">

Falls Wir längere Liste bekommen, so können wir auch Trennzeichen einführen. Mit Hilfe von  grouping-size="3"
grouping-separator="." bauen wir unser deutsches Tausender Trennzeichen Format nach.

Also nun zum Beispiel:

 

Unsere Liste soll abhängig von der Position der gefundenen Daten nummeriert sein und eine führende "0" haben , sowie ein "." als Tausendertrennzeichen.

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

<xsl:template match="items">
   <xsl:for-each select="item">
      <xsl:sort select="."/>
      <xsl:number value="position()" format="01.) " grouping-separator="."  grouping-size="3" />
      <xsl:value-of select="."/>,
    <br/>
   </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

und hier das XML File:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="numelem.xsl" ?>

<
items>
<item>Andreas</item>
<item>Thomas</item>
<item>Anton</item>
<item>Volkmar</item>
<item>Tom</item>
<item>Sonja K</item>
<item>Hans</item>
<item>Wolfgang</item>
<item>Sonja S</item>
</
items>

Quiz: Was passiert, wenn wir statt position() einfach den value als "3" angeben?

Antwort:
Würden wir anstatt postion() einfach eine Beliebige Zahl angeben wie value="3" bekommen wir nur "C."s oder "3."er zurück.

 

Die Beipiele gibts zum runterladen...

 

Also auf gehts' gleich testen.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente

  Erfasst am: 16.08.2001
  Gültig bis: 15.09.2001
10 Ratings
Bewertung: 40,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG