DevTrain .NET Developers Home. Das Community Portal für ASP.NET, Visual Basic, C#
 
  Login Status: Hallo   Anmelden  Suche:  
Navigationslinks überspringen
Startseite
Artikel
Blogs
Foren
ClubClub erweitern

 
Ihre Optionen
Save
Mail
Print
Rate
 
Advertising
  ASP konferenz vom 24.-25. Februar 2010 im ehem. IMAX München

 
Navigationslinks überspringen
Autor:Andreas Rauch

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.


Diskutieren Sie in den Foren

SharePoint Camp – In 5 Tagen zum SharePoint Profi!