www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Sonstiges" - xslt
xslt < Sonstiges < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

xslt: "zählen" und "ausrichten"
Status: (Frage) beantwortet Status 
Datum: 23:05 Mo 03.12.2007
Autor: Bastiane

Aufgabe
c) Schreibe ein XSLT-Stylesheet lib-c.xsl, das Autoren und die Anzahl ihrer Bücher (als Balkendiagramm) auflistet. Sortiert wird dabei nach Anzahl der Bücher, die ein Autor geschrieben hat (größte Zahl zuerst). Außerdem sollen nur die ersten drei Autoren in
dieser Rangliste ausgegeben werden. Format:

Pratchett, Terry      ####################################
Banks, Iain M.        ###########
Rowling, Joanne K.    #######

Hallo noch ein vorerst letztes Mal! ;-)

Bei obiger Aufgabe habe ich immerhin schon geschafft, für jedes Buch hinter den Autornamen ein # zu schreiben:

<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text" indent="yes"/>

  <xsl:template match="book-list">
    <xsl:for-each-group select="book" group-by="author">  
      <xsl:apply-templates select="author"/>
      <xsl:for-each select="current-group()">
        <xsl:text>#</xsl:text>        
      </xsl:for-each>
      <xsl:text>
</xsl:text>
    </xsl:for-each-group>  
  </xsl:template>
</xsl:stylesheet>

Nun habe ich aber zwei Probleme:

1.) Wie bekomme ich das so eingerückt, dass die jeweils ersten Rauten untereinander stehen? Gibt es da irgendwas, womit ich sagen kann, dass das an der so und so vielten Stelle hinsoll? Irgendwie habe ich da gar keine Idee, wie man das machen könnte. [kopfkratz]

2.) Wie gebe ich nachher nur die ersten 3 raus? Im Moment gibt er mir ja alles aus. Irgendwie muss ich ja "zählen", wieviele #'s es gibt, und dann muss ich halt die 3 größten ausgeben, aber auch nur die. Also habe ich einmal das Problem, sie zu zählen, dann, die ersten 3 davon zu bestimmen, und als letztes noch, nur diese auszugeben.

Hat da jemand eine Idee?

Viele Grüße
Bastiane
[cap]


        
Bezug
xslt: Antwort
Status: (Antwort) fertig Status 
Datum: 00:52 Di 04.12.2007
Autor: rainerS

Hallo Bastiane!

> c) Schreibe ein XSLT-Stylesheet lib-c.xsl, das Autoren und
> die Anzahl ihrer Bücher (als Balkendiagramm) auflistet.
> Sortiert wird dabei nach Anzahl der Bücher, die ein Autor
> geschrieben hat (größte Zahl zuerst). Außerdem sollen nur
> die ersten drei Autoren in
>  dieser Rangliste ausgegeben werden. Format:
>  
> Pratchett, Terry      ####################################
>  Banks, Iain M.        ###########
>  Rowling, Joanne K.    #######
>  Hallo noch ein vorerst letztes Mal! ;-)
>  
> Bei obiger Aufgabe habe ich immerhin schon geschafft, für
> jedes Buch hinter den Autornamen ein # zu schreiben:
>  
> <xsl:stylesheet version="2.0"
>       xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>       <xsl:output method="text" indent="yes"/>
>  
> <xsl:template match="book-list">
>      <xsl:for-each-group select="book" group-by="author">  
> <xsl:apply-templates select="author"/>
>        <xsl:for-each select="current-group()">
>          <xsl:text>#</xsl:text>        
> </xsl:for-each>
>        <xsl:text>
>  </xsl:text>
>      </xsl:for-each-group>  
> </xsl:template>
>  </xsl:stylesheet>
>  
> Nun habe ich aber zwei Probleme:
>  
> 1.) Wie bekomme ich das so eingerückt, dass die jeweils
> ersten Rauten untereinander stehen? Gibt es da irgendwas,
> womit ich sagen kann, dass das an der so und so vielten
> Stelle hinsoll? Irgendwie habe ich da gar keine Idee, wie
> man das machen könnte. [kopfkratz]

Du kannst geschickt Funktionen benutzen. Zum Beispiel:

<xsl:value-of select="count(current-group())"/>

gibt dir die Anzahl der Elemente der aktuellen Gruppe aus (also die Anzahl der #), oder

<xsl:sort select="count(current-group())"/>

Mit max(string-length(author)) bekommst du die Länge des längsten author-Elements.


> 2.) Wie gebe ich nachher nur die ersten 3 raus? Im Moment
> gibt er mir ja alles aus. Irgendwie muss ich ja "zählen",
> wieviele #'s es gibt, und dann muss ich halt die 3 größten
> ausgeben, aber auch nur die. Also habe ich einmal das
> Problem, sie zu zählen, dann, die ersten 3 davon zu
> bestimmen, und als letztes noch, nur diese auszugeben.

<xsl:if test="position() lt 4"> ... </xsl:if>

Viele Grüße
  Rainer

Bezug
                
Bezug
xslt: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 22:29 Di 04.12.2007
Autor: Bastiane

Hallo rainerS!

> > 1.) Wie bekomme ich das so eingerückt, dass die jeweils
> > ersten Rauten untereinander stehen? Gibt es da irgendwas,
> > womit ich sagen kann, dass das an der so und so vielten
> > Stelle hinsoll? Irgendwie habe ich da gar keine Idee, wie
> > man das machen könnte. [kopfkratz]
>  
> Du kannst geschickt Funktionen benutzen. Zum Beispiel:
>  
>
1: <xsl:value-of 
2: > select="count(current-group())"/>


>  
> gibt dir die Anzahl der Elemente der aktuellen Gruppe aus
> (also die Anzahl der #), oder
>  
> <xsl:sort select="count(current-group())"/>
>  
> Mit max(string-length(author)) bekommst du die Länge des
> längsten author-Elements.

Sorry, das hatte ich wohl überlesen. Allerdings funktioniert das bei mir nicht. Mit
<xsl:value-of select="max(string-length(author))"/>
gibt er mir entweder 0 raus, wenn ich es relativ weit ans Ende stelle, oder er gibt mir in einem for-each nochmal nur string-length(author) aus. Wo muss ich das denn hinschreiben? Also so:

<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text" indent="yes"/>

  <xsl:template match="book-list">
    <xsl:for-each select="book">
      <xsl:value-of select="author"/>
      <xsl:value-of select="string-length(author)"/>
      <xsl:text>
</xsl:text>
    </xsl:for-each>
    <xsl:value-of select="max(string-length(author))"/>
  </xsl:template>
</xsl:stylesheet>

kommt nur 0 raus. Aber die Längen jedes Autors schreibt er richtig da hin (an der stelle, wo nur <xsl:value-of select="string-length(author)"/> steht).

Viele Grüße
Bastiane
[cap]

Bezug
                        
Bezug
xslt: Antwort
Status: (Antwort) fertig Status 
Datum: 23:09 Di 04.12.2007
Autor: rainerS

Hallo Bastiane!

> Hallo rainerS!
>  
> > > 1.) Wie bekomme ich das so eingerückt, dass die jeweils
> > > ersten Rauten untereinander stehen? Gibt es da irgendwas,
> > > womit ich sagen kann, dass das an der so und so vielten
> > > Stelle hinsoll? Irgendwie habe ich da gar keine Idee, wie
> > > man das machen könnte. [kopfkratz]
>  >  
> > Du kannst geschickt Funktionen benutzen. Zum Beispiel:
>  >  
> >
1: <xsl:value-of 
2: > > select="count(current-group())"/>


>  >  
> > gibt dir die Anzahl der Elemente der aktuellen Gruppe aus
> > (also die Anzahl der #), oder
>  >  
> > <xsl:sort select="count(current-group())"/>
>  >  
> > Mit max(string-length(author)) bekommst du die Länge des
> > längsten author-Elements.
>  
> Sorry, das hatte ich wohl überlesen. Allerdings
> funktioniert das bei mir nicht. Mit
> <xsl:value-of select="max(string-length(author))"/>
>  gibt er mir entweder 0 raus, wenn ich es relativ weit ans
> Ende stelle, oder er gibt mir in einem for-each nochmal nur
> string-length(author) aus. Wo muss ich das denn
> hinschreiben?

Hmm, stimmt, damit bekommst du ja nur unmittelbare Kinder. Eher so:

select="max(//string-length(author))"/>

um author-Elemente in beliebiger Tiefe zu bekommen, oder

<xsl:value-of select="max(book/string-length(author))"/>

innerhalb des book-list Template.

Tipp: Speichere den Wert in einer Variablen mit xsl:variable:

  <xsl:variable name="maxlen" select="max(//string-length(author))"/>

Dann kannst du später in der Schleife so etwas wie "($maxlen)+3-(string-length(author))" schreiben.

Viele Grüße
   Rainer

Bezug
                                
Bezug
xslt: bin zu doof...
Status: (Frage) beantwortet Status 
Datum: 00:01 Mi 05.12.2007
Autor: Bastiane

Hallo Rainer!

Irgendwie bin ich zu doof. [wein]

Wenn ich es mir nicht einbilde, hatte es vorhin einmal geklappt, dass er mir die maximale Länge ausgibt, aber irgendwas anderes stimmte nicht, so dass ich viel ausprobiert habe, und jetzt gibt er mir nicht mal mehr die maximale Länge aus... Was ist denn da hier dran falsch:

<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text" indent="yes"/>

  <xsl:template match="book-list">
    <xsl:variable name="maxlen" select="max(//string-length(author))"/>
    <xsl:value-of select="maxlen"/>

    <xsl:for-each select="book">
      
      <xsl:value-of select="author"/>
      <xsl:text> </xsl:text>

      <xsl:text>
</xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>


Hab' das jetzt erstmal sehr vereinfacht, weil ich ja nur das Einrücken hinbekommen möchte. Vielleicht steht die Variable an der falschen Stelle, aber ich habe sie an alle möglichen Stellen geschrieben und nie kam mehr etwas dabei raus...
Aber vielleicht ist es jetzt auch einfach wieder nur zu spät...

Viele Grüße und nochmal danke für alles Bisherige. :-)
Bastiane
[cap]

Bezug
                                        
Bezug
xslt: Antwort
Status: (Antwort) fertig Status 
Datum: 00:07 Mi 05.12.2007
Autor: rainerS

Hallo Bastiane!

>      <xsl:value-of select="maxlen"/>

Das nimmt das Element namens "maxlen".  Für die Variable musst du "$maxlen" schreiben.

Viele Grüße
   Rainer



Bezug
                                                
Bezug
xslt: nur noch Schönheitsfehler
Status: (Frage) beantwortet Status 
Datum: 01:10 Mi 05.12.2007
Autor: Bastiane

Hallo Rainer!

> >      <xsl:value-of select="maxlen"/>

>  
> Das nimmt das Element namens "maxlen".  Für die Variable
> musst du "$maxlen" schreiben.

Vielen Dank. War wohl doch schon zu spät. Hatte wohl das $ beim ersten Mal eingegeben und dann anscheinend gelöscht. [bonk]

Hab's jetzt endlich endlich hinbekommen! [huepf] Allerdings gibt es noch zwei "Schönheitsfehler":

1.) Eigentlich bräuchte ich ja nur die maximale Länge der drei ersten Elemente. Ich habe nämlich in meiner library ein ziemlich langes "Element", weil da mehrere Autoren vorkommen, und so viel Platz muss er da ja dann auch nicht machen. Aber kann ich irgendwie nur die längste Länge der drei ersten Elemente berechnen?

2.) Bevor ich nur die 3 ersten ausgab, hatte ich das mit allen Büchern getestet. Ich weiß nicht, ob es am Textprogramm liegt oder ob ich es anders schreiben muss, aber Umlaute zeigt er nicht an bzw. schreibt da so ein paar komische Zeichen hin. Und dadurch werden dann die #-Zeichen verrückt. (Zum Glück haben bei mir die drei "ersten" keine Umlaute, so dass das am Ende nicht auffällt. ;-))

Falls du dazu auch noch was weißt, wäre es toll, aber wenn ich es so abgebe, müsste ich da auch schon mal viele Punkte für bekommen. :-)

Viele Grüße und nochmals vielen vielen Dank [flowers]
Bastiane
[cap]

Bezug
                                                        
Bezug
xslt: Antwort
Status: (Antwort) fertig Status 
Datum: 11:03 Mi 05.12.2007
Autor: rainerS

Hallo Bastiane!

> Hab's jetzt endlich endlich hinbekommen! [huepf] Allerdings
> gibt es noch zwei "Schönheitsfehler":
>  
> 1.) Eigentlich bräuchte ich ja nur die maximale Länge der
> drei ersten Elemente. Ich habe nämlich in meiner library
> ein ziemlich langes "Element", weil da mehrere Autoren
> vorkommen, und so viel Platz muss er da ja dann auch nicht
> machen. Aber kann ich irgendwie nur die längste Länge der
> drei ersten Elemente berechnen?

Es geht bestimmt irgendwie ;-)

Idee: mach die Transformation in zwei Schritten: im ersten erzeugst du aus dem book-list Element eine verkürzte Liste (wieder als XML), die nur die 3 gewünschten Autoren und die Anzahl der Bücher enthält. Dann transformierst du im zweiten Schritt dieses xml in die gewünschte Ausgabeform.

> 2.) Bevor ich nur die 3 ersten ausgab, hatte ich das mit
> allen Büchern getestet. Ich weiß nicht, ob es am
> Textprogramm liegt oder ob ich es anders schreiben muss,
> aber Umlaute zeigt er nicht an bzw. schreibt da so ein paar
> komische Zeichen hin. Und dadurch werden dann die #-Zeichen
> verrückt.

Passiert das, wenn du es direkt ausgibst, oder auch, wenn du die Ausgabe in eine Datei schreibst?

Es sieht mir nach einem Encoding-Problem aus. So ins Blaue hinein vermute ich, dass die Ausgabe der Umlaute im UTF8-Encoding passiert. In diesem Encoding sind alle nicht ASCII-Zeichen mehr als ein Byte lang. Wenn bei der Ausgabe alle Zeichen als ein Byte lang interpretiert werden (zum Beispiel im Encoding ISO 8859-1), dann werden die Umlaute als zwei Zeichen ausgegeben. Ein "ä" wird so zu "ä".

Zum Beispiel Windows Notepad hat so seine Probleme mit UTF8; ein vernünftiger Editor hilft ;-)

Viele Grüße
   Rainer

Bezug
                                                                
Bezug
xslt: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:31 Do 06.12.2007
Autor: Bastiane

Hallo Rainer!

Danke, aber das hat leider dann doch nicht mehr hingehauen. Brauche jetzt dringend etwas Schlaf. :-)

> > 1.) Eigentlich bräuchte ich ja nur die maximale Länge der
> > drei ersten Elemente. Ich habe nämlich in meiner library
> > ein ziemlich langes "Element", weil da mehrere Autoren
> > vorkommen, und so viel Platz muss er da ja dann auch nicht
> > machen. Aber kann ich irgendwie nur die längste Länge der
> > drei ersten Elemente berechnen?
>  
> Es geht bestimmt irgendwie ;-)

Gut, das heißt, ganz so einfach ist es nicht, ja? ;-) Hatte gerade noch überlegt, ob ich es ändern soll und einfach einen festen Wert eingeben soll, aber das könnte ja theoretisch Komplikationen geben, wenn dann der längste zu lang ist und auch noch ausgegeben werden muss. Deswegen habe ich es so gelassen - finde es so "korrekter".

> Idee: mach die Transformation in zwei Schritten: im ersten
> erzeugst du aus dem book-list Element eine verkürzte Liste
> (wieder als XML), die nur die 3 gewünschten Autoren und die
> Anzahl der Bücher enthält. Dann transformierst du im
> zweiten Schritt dieses xml in die gewünschte Ausgabeform.

Heißt das, ich müsste zwei Stylesheets schreiben? Muss ich das dann auch zweimal aufrufen? Oder ginge das irgendwie in eins? Aber wahrscheinlich wird das eh zu kompliziert. ;-)

> > 2.) Bevor ich nur die 3 ersten ausgab, hatte ich das mit
> > allen Büchern getestet. Ich weiß nicht, ob es am
> > Textprogramm liegt oder ob ich es anders schreiben muss,
> > aber Umlaute zeigt er nicht an bzw. schreibt da so ein paar
> > komische Zeichen hin. Und dadurch werden dann die #-Zeichen
> > verrückt.
>  
> Passiert das, wenn du es direkt ausgibst, oder auch, wenn
> du die Ausgabe in eine Datei schreibst?

Mmh, also unser "Eingabebefehl" (allerdings für die letzte Aufgabe)war:
java -cp saxon8.jar net.sf.saxon.Transform -o library.html -s library.xml library-html.xsl
Ich glaube, da wird es direkt in eine Datei geschrieben!? Jedenfalls musste ich danach die Datei library.html (glaube ich [kopfkratz]) öffnen, um etwas zu sehen. ;-) Und da passierte es immer.

> Es sieht mir nach einem Encoding-Problem aus. So ins Blaue
> hinein vermute ich, dass die Ausgabe der Umlaute im
> UTF8-Encoding passiert. In diesem Encoding sind alle nicht
> ASCII-Zeichen mehr als ein Byte lang. Wenn bei der Ausgabe
> alle Zeichen als ein Byte lang interpretiert werden (zum
> Beispiel im Encoding ISO 8859-1), dann werden die Umlaute
> als zwei Zeichen ausgegeben. Ein "ä" wird so zu "ä".
>  
> Zum Beispiel Windows Notepad hat so seine Probleme mit
> UTF8; ein vernünftiger Editor hilft ;-)

Aber man nimmt schon UTF-8, oder? Muss mir das für eine andere Vorlesung nochmal angucken mit den ganzen Codes - habe das schon wieder vergessen, was da was war...

Gibt es denn einen Editor, mit dem das besser wäre, den ich evtl. auf dem Rechner haben oder leicht runterladen könnte? (also nichts kompliziertes...) Hatte es mit dem editor geschrieben und nach deiner Mitteilung hier mal mit Wordpad (ist das dasselbe wie Notepad?) ausprobiert, auch mit anderen Codierungen, aber es hat nicht geholfen (oder ich habe wieder etwas falsch gemacht...).

Aber was noch etwas wichtiger ist: Liegt es daran, wie ich es schreiben oder daran, wie man es öffnet? Ich würde, an ersterem, das heißt, wer auch immer sich meine Lösung anguckt, wird die Umlaute auch nicht angezeigt bekommen, oder? Das ist natürlich nicht so toll... Vllt kann ich das demnächst doch mal ändern. :-)

Viele Grüße und nochmals danke für alles
Bastiane
[cap]

Bezug
                                                                        
Bezug
xslt: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:43 Do 06.12.2007
Autor: rainerS

Hallo Bastiane!

> Hallo Rainer!
>  
> Danke, aber das hat leider dann doch nicht mehr hingehauen.
> Brauche jetzt dringend etwas Schlaf. :-)

Richtig, da war was ;-)

> > > 1.) Eigentlich bräuchte ich ja nur die maximale Länge der
> > > drei ersten Elemente. Ich habe nämlich in meiner library
> > > ein ziemlich langes "Element", weil da mehrere Autoren
> > > vorkommen, und so viel Platz muss er da ja dann auch nicht
> > > machen. Aber kann ich irgendwie nur die längste Länge der
> > > drei ersten Elemente berechnen?
>  >  
> > Es geht bestimmt irgendwie ;-)
>  

> Heißt das, ich müsste zwei Stylesheets schreiben? Muss ich
> das dann auch zweimal aufrufen? Oder ginge das irgendwie in
> eins? Aber wahrscheinlich wird das eh zu kompliziert. ;-)

Mit zweien geht's auf jeden Fall. Mit xslt 2.0 geht's auch in einem, denn da kann man Zwischenergebnisse erzeugen, die man weiterverarbeitet.

Ich habe mal nachgeschaut, wie man das macht: Hier baue ich ein neues Element "top-book-list" in einer Variablen auf und wende dann Templates darauf an:

1: <xsl:variable name="temp-tree" as="document-node()">
2:      <xsl:document>
3:       <top-book-list>
4:     
5:     ... gewünschte elemente zusammenbauen...
6:
7:       </top-book-list>
8:     </xsl:document>
9:    </xsl:variable>
10:   <xsl:apply-templates select="$temp-tree"/>



> > > 2.) Bevor ich nur die 3 ersten ausgab, hatte ich das mit
> > > allen Büchern getestet. Ich weiß nicht, ob es am
> > > Textprogramm liegt oder ob ich es anders schreiben muss,
> > > aber Umlaute zeigt er nicht an bzw. schreibt da so ein paar
> > > komische Zeichen hin. Und dadurch werden dann die #-Zeichen
> > > verrückt.
>  >  
> > Passiert das, wenn du es direkt ausgibst, oder auch, wenn
> > du die Ausgabe in eine Datei schreibst?
>  
> Mmh, also unser "Eingabebefehl" (allerdings für die letzte
> Aufgabe)war:
>  java -cp saxon8.jar net.sf.saxon.Transform -o library.html
> -s library.xml library-html.xsl
>  Ich glaube, da wird es direkt in eine Datei geschrieben!?
> Jedenfalls musste ich danach die Datei library.html (glaube
> ich [kopfkratz]) öffnen, um etwas zu sehen. ;-) Und da
> passierte es immer.
>  
> > Es sieht mir nach einem Encoding-Problem aus. So ins Blaue
> > hinein vermute ich, dass die Ausgabe der Umlaute im
> > UTF8-Encoding passiert. In diesem Encoding sind alle nicht
> > ASCII-Zeichen mehr als ein Byte lang. Wenn bei der Ausgabe
> > alle Zeichen als ein Byte lang interpretiert werden (zum
> > Beispiel im Encoding ISO 8859-1), dann werden die Umlaute
> > als zwei Zeichen ausgegeben. Ein "ä" wird so zu "ä".
>  >  
> > Zum Beispiel Windows Notepad hat so seine Probleme mit
> > UTF8; ein vernünftiger Editor hilft ;-)
>  
> Aber man nimmt schon UTF-8, oder? Muss mir das für eine
> andere Vorlesung nochmal angucken mit den ganzen Codes -
> habe das schon wieder vergessen, was da was war...
>  
> Gibt es denn einen Editor, mit dem das besser wäre, den ich
> evtl. auf dem Rechner haben oder leicht runterladen könnte?
> (also nichts kompliziertes...) Hatte es mit dem editor
> geschrieben und nach deiner Mitteilung hier mal mit Wordpad
> (ist das dasselbe wie Notepad?) ausprobiert, auch mit
> anderen Codierungen, aber es hat nicht geholfen (oder ich
> habe wieder etwas falsch gemacht...).

Ich hab's gerade mal ausprobiert (auf einem XP Rechner): Wordpad stellt UTF8 falsch dar, Notepad ("Editor") scheint es richtig zu machen (hat mich überrascht), hat aber Probleme mit Unix/Linux Zeilenenden.

Probier mal []SciTe, der hat gleich Unterstützung für verschiedene Programmiersprachen (Syntax-Highlighting, automatisches Einrücken und so).

> Aber was noch etwas wichtiger ist: Liegt es daran, wie ich
> es schreiben oder daran, wie man es öffnet?

Eher daran, ob der Editor mit dem Encoding klar kommt.

Viele Grüße
   Rainer

Bezug
                                                                                
Bezug
xslt: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:10 Do 06.12.2007
Autor: Bastiane

Hallo Rainer!

> Ich habe mal nachgeschaut, wie man das macht: Hier baue ich
> ein neues Element "top-book-list" in einer Variablen auf
> und wende dann Templates darauf an:
>  
>
1: <xsl:variable name="temp-tree" as="document-node()">
2: >       <xsl:document>
3: >        <top-book-list>
4: >      
5: > ... gewünschte elemente zusammenbauen...
6: >  
7: > </top-book-list>
8: >      </xsl:document>
9: >     </xsl:variable>
10: >    <xsl:apply-templates select="$temp-tree"/>


Das gucke ich mir mal genauer an, wenn ich dann für die Klausur lerne...

> Ich hab's gerade mal ausprobiert (auf einem XP Rechner):
> Wordpad stellt UTF8 falsch dar, Notepad ("Editor") scheint
> es richtig zu machen (hat mich überrascht), hat aber
> Probleme mit Unix/Linux Zeilenenden.

Komisch, ich hatte es doch mit dem Editor geschrieben!?
  

> Probier mal []SciTe, der
> hat gleich Unterstützung für verschiedene
> Programmiersprachen (Syntax-Highlighting, automatisches
> Einrücken und so).

Danke.
  

> > Aber was noch etwas wichtiger ist: Liegt es daran, wie ich
> > es schreiben oder daran, wie man es öffnet?
>
> Eher daran, ob der Editor mit dem Encoding klar kommt.

Jaja, aber der Editor mit dem ich die Datei schreibe oder der Editor, mit dem man die Datei öffnet?

Viele Grüße
Bastiane
[cap]

Bezug
                                                                                        
Bezug
xslt: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:17 Fr 07.12.2007
Autor: rainerS

Hallo Bastiane!

> > > Aber was noch etwas wichtiger ist: Liegt es daran, wie ich
> > > es schreiben oder daran, wie man es öffnet?
> >
> > Eher daran, ob der Editor mit dem Encoding klar kommt.
>  
> Jaja, aber der Editor mit dem ich die Datei schreibe oder
> der Editor, mit dem man die Datei öffnet?

Schwer zu sagen. Ich würde auf das zweite tippen, aber ohne die Dateien selber anzuschauen...

  Viele Grüße
   Rainer

Bezug
                
Bezug
xslt: Hälfte funktioniert - danke
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:00 Di 04.12.2007
Autor: Bastiane

Hallo Rainer!

Ach, ich hatte mich glaube ich schon lange nicht mehr bedankt!? Vielen vielen Dank. Ohne dich würde ich die Nächte wahrscheinlich ganz durchmachen, und bei dieser Aufgabe hier hätte ich wohl doch spätestens vor einer Stunde oder so aufgegeben... :-)

> Du kannst geschickt Funktionen benutzen. Zum Beispiel:
>  
>
1: <xsl:value-of 
2: > select="count(current-group())"/>


>  
> gibt dir die Anzahl der Elemente der aktuellen Gruppe aus
> (also die Anzahl der #), oder
>  
> <xsl:sort select="count(current-group())"/>

Nach laaaangem Hin und Her, gaaaaaaaaaaaaaanz vielen Versuchen und ein bisschen Googeln hat das jetzt endlich funktioniert. Er gibt mir die drei ersten mit den schönen # dahinter aus. Nur das "Einrücken" fehlt noch... Aber notfalls gebe ich es auch so ab. Und ein bisschen Zeit ist ja noch.

Viele Grüße
Bastiane
[cap]

Bezug
        
Bezug
xslt: 1. Frage?
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:55 Di 04.12.2007
Autor: Bastiane

Hallo nochmal!

Die obigen Vorschläge probiere ich jetzt mal aus, aber meine 1. Frage wurde noch gar nicht beantwortet...

> 1.) Wie bekomme ich das so eingerückt, dass die jeweils
> ersten Rauten untereinander stehen? Gibt es da irgendwas,
> womit ich sagen kann, dass das an der so und so vielten
> Stelle hinsoll? Irgendwie habe ich da gar keine Idee, wie
> man das machen könnte. [kopfkratz]

Viele Grüße
Bastiane
[cap]

Bezug
                
Bezug
xslt: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:48 Di 04.12.2007
Autor: rainerS

Hallo Bastiane!

> Hallo nochmal!
>  
> Die obigen Vorschläge probiere ich jetzt mal aus, aber
> meine 1. Frage wurde noch gar nicht beantwortet...

Siehe meinen Hinweis auf max(string-length(author)).

> > 1.) Wie bekomme ich das so eingerückt, dass die jeweils
> > ersten Rauten untereinander stehen? Gibt es da irgendwas,
> > womit ich sagen kann, dass das an der so und so vielten
> > Stelle hinsoll? Irgendwie habe ich da gar keine Idee, wie
> > man das machen könnte. [kopfkratz]

Idee: Benutze (string-length(author)) um die Länge des author-Eintrags zu finden. Dann musst du für jeden Autor (zum Beispiel) 20-(string-length(author)) Leerzeichen ausgeben, etwa so (ungetestet):

1: <xsl:for-each select="1 to 20-(string-length(author))">
2:       <xsl:text> </xsl:text>
3:     </xsl:for-each>


Viele Grüße
   Rainer

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de