Announcement

Collapse
No announcement yet.

Xslt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Xslt

    Hallo allerseits,
    Ich versuche eine Aufgabe in XSLT zu bewältigen.
    Leider komme ich nicht weiter und bin auf Hilfe angewiesen. Habe eine XML Datei es enthält drei Gedichte, und ich soll einen Stylesheet erstellen in dem die ungeraden Zeilen mit Zahlen und die geraden mit Farbe versehen werden sollen. Ich weiß auch dass ich mit der "Position ()" und dem "Modulo" das irgendwie machen kann, aber mir fehlt nichts ein wie ich die beiden Funktionen zusammenbringen kann, um das gewünschte Ergebnis zu erhalten. Ich wäre für jeden Tipp dankbar!

  • #2
    Welche Version von XSLT, welchen XSLT-Prozessor verwendest du? Wie sieht das XML-Format aus, und vor allem, welches Zielformat (HTML, XSL-FO/PDF) willst du erzeugen? Mit HTML hat ja mittels CSS heute einfache Möglichkeiten wie https://developer.mozilla.org/en-US/...S/:nth-of-type, gerade und ungerade (even/odd) zu unterscheiden.

    Mit HTML und CSS als Zielformat braucht man sich dann in XSLT nicht um Farben oder Positionen zu kümmern; aus

    Code:
    <collection>
        <poem title="poem 1">
            <line>...</line>
            <line>...</line>
            <line>...</line>
            <line>...</line>
            <line>...</line>
        </poem>
    </collection>
    wird dann per

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="#all"
        version="3.0">
    
      <xsl:output method="html" indent="yes" html-version="5"/>
    
      <xsl:template match="/">
        <html>
          <head>
            <title>.NET XSLT Fiddle Example</title>
            <style>
                section.poem {
                  counter-reset: odd-lines;
                }
                section.poem p:nth-of-type(even) {
                  color: white; background-color: black;
                }
                section.poem p:nth-of-type(odd) {
                  counter-increment: odd-lines;
                }
                section.poem p:nth-of-type(odd)::before{
                  content: counter(odd-lines);
                }
                section.poem p {
                  margin-top: 0; margin-bottom: 0;
                }
            </style>
          </head>
          <body>
              <xsl:apply-templates/>
          </body>
        </html>
      </xsl:template>
    
      <xsl:template match="poem">
          <section class="poem">
              <h2><xsl:value-of select="@title"/></h2>
              <xsl:apply-templates/>
          </section>
      </xsl:template>
    
      <xsl:template match="line">
          <p>
              <xsl:apply-templates/>
          </p>
      </xsl:template>
    
    </xsl:stylesheet>
    ein HTML Dokument

    Code:
    <!DOCTYPE HTML>
    <html>
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>.NET XSLT Fiddle Example</title><style>
                section.poem {
                  counter-reset: odd-lines;
                }
                section.poem p:nth-of-type(even) {
                  color: white; background-color: black;
                }
                section.poem p:nth-of-type(odd) {
                  counter-increment: odd-lines;
                }
                section.poem p:nth-of-type(odd)::before{
                  content: counter(odd-lines);
                }
                section.poem p {
                  margin-top: 0; margin-bottom: 0;
                }
            </style></head>
       <body>
    
          <section class="poem">
             <h2>poem 1</h2>
    
             <p>...</p>
    
             <p>...</p>
    
             <p>...</p>
    
             <p>...</p>
    
             <p>...</p>
    
          </section>
    
       </body>
    </html>


    https://xsltfiddle.liberty-development.net/bdxtrf
    Zuletzt editiert von Martin Honnen; 07.12.2018, 13:07. Reason: Beispiel für HTML mit CSS Selektoren und Regeln basierend auf Position

    Comment

    Working...
    X