cayron: verschachtelte knoten/attribute unterschiedlich formatieren

hallo

ich suche nach einer anweisung die
verschachtelte elemente vom typ section (=kapitel/absatz)
mit dem attribut title (kapitelüberschrift)
je nach hierarchie-ebene unterschiedlich
formatiert, und der entsprechenden überschrift
h1-h6 zuweist. (section kann section beinhalten)

dazu habe ich zwar eine variable ($depth)
mit dem wert der hierarchie-tiefe,
kann dies aber nicht auf eine elementauswahl
(hier h1) beziehen.
ein element p mit xsl:attribut class="§depth" wäre nett,
aber es soll mit h1 bis h6 umgesetzt werden.

folgende lösung funktioniert leider auch nicht:

<xsl:variable name="tmp" select="concat('h',$depth)"/>
<xsl:element name="$tmp">

kann mir jemand weiterhelfen ?
noch fragen?

  1. Hi,

    ich suche nach einer anweisung die
    verschachtelte elemente vom typ section (=kapitel/absatz)
    mit dem attribut title (kapitelüberschrift)
    je nach hierarchie-ebene unterschiedlich
    formatiert, und der entsprechenden überschrift
    h1-h6 zuweist. (section kann section beinhalten)

    dazu habe ich zwar eine variable ($depth)
    mit dem wert der hierarchie-tiefe,
    kann dies aber nicht auf eine elementauswahl
    (hier h1) beziehen.
    ein element p mit xsl:attribut class="§depth" wäre nett,
    aber es soll mit h1 bis h6 umgesetzt werden.

    schon mal probiert, einfach unterschiedliche Templates zu benutzen?
    Also so:

    <xsl:template match="section/section/section/section/section/section">
       <h6><xsl:value-of select="@title"/></h6>
    </xsl:template>
    <xsl:template match="section/section/section/section/section">
       <h5><xsl:value-of select="@title"/></h5>
    </xsl:template>
    ...
    <xsl:template match="section">
       <h1><xsl:value-of select="@title"/></h1>
    </xsl:template>

    (ist zwar der brute-force-Ansatz, aber bei nur 6 Ebenen...)
    Andreas

    1. das war die alte lösung, die ich erneuern wollte,
      da man dann probleme mit "section/irgendeinanderertag/section" bekommt.

      hab aber ne lösung gefunden ...

      trotzdem danke

      Hi,

      ich suche nach einer anweisung die
      verschachtelte elemente vom typ section (=kapitel/absatz)
      mit dem attribut title (kapitelüberschrift)
      je nach hierarchie-ebene unterschiedlich
      formatiert, und der entsprechenden überschrift
      h1-h6 zuweist. (section kann section beinhalten)

      dazu habe ich zwar eine variable ($depth)
      mit dem wert der hierarchie-tiefe,
      kann dies aber nicht auf eine elementauswahl
      (hier h1) beziehen.
      ein element p mit xsl:attribut class="§depth" wäre nett,
      aber es soll mit h1 bis h6 umgesetzt werden.

      schon mal probiert, einfach unterschiedliche Templates zu benutzen?
      Also so:

      <xsl:template match="section/section/section/section/section/section">
         <h6><xsl:value-of select="@title"/></h6>
      </xsl:template>
      <xsl:template match="section/section/section/section/section">
         <h5><xsl:value-of select="@title"/></h5>
      </xsl:template>
      ...
      <xsl:template match="section">
         <h1><xsl:value-of select="@title"/></h1>
      </xsl:template>

      (ist zwar der brute-force-Ansatz, aber bei nur 6 Ebenen...)
      Andreas

  2. <!-- die Überschrift -->
    <!-- <H?> bereich fängt an -->
    <xsl:variable name="topic" select="concat('h',$depth)"/>
    <xsl:text disable-output-escaping="yes"><</xsl:text>
    <xsl:value-of select="$topic"/>
    <xsl:text disable-output-escaping="yes">></xsl:text>

    [...]

    <!-- <H?> bereich hört wieder auf an -->
    <xsl:text disable-output-escaping="yes"></</xsl:text>
    <xsl:value-of select="$topic"/>
    <xsl:text disable-output-escaping="yes">></xsl:text>

    *freu*

    hallo

    ich suche nach einer anweisung die
    verschachtelte elemente vom typ section (=kapitel/absatz)
    mit dem attribut title (kapitelüberschrift)
    je nach hierarchie-ebene unterschiedlich
    formatiert, und der entsprechenden überschrift
    h1-h6 zuweist. (section kann section beinhalten)

    dazu habe ich zwar eine variable ($depth)
    mit dem wert der hierarchie-tiefe,
    kann dies aber nicht auf eine elementauswahl
    (hier h1) beziehen.
    ein element p mit xsl:attribut class="§depth" wäre nett,
    aber es soll mit h1 bis h6 umgesetzt werden.

    folgende lösung funktioniert leider auch nicht:

    <xsl:variable name="tmp" select="concat('h',$depth)"/>
    <xsl:element name="$tmp">

    kann mir jemand weiterhelfen ?
    noch fragen?

    1. <!-- die Überschrift -->
      <!-- <H?> bereich fängt an -->
      <xsl:variable name="topic" select="concat('h',$depth)"/>
      <xsl:text disable-output-escaping="yes"><</xsl:text>
      <xsl:value-of select="$topic"/>
      <xsl:text disable-output-escaping="yes">></xsl:text>

      [...]

      <!-- <H?> bereich hört wieder auf an -->
      <xsl:text disable-output-escaping="yes"></</xsl:text>
      <xsl:value-of select="$topic"/>
      <xsl:text disable-output-escaping="yes">></xsl:text>

      Aua, das tut weh. So erzeugt man keine Elemente im Output.

      Hier die richtige Lösung:
      Annahme: in $depth steht eine ganze Zahl von 1 bis 6:

      <xsl:element name="h{$depth}">
       was auch immer in dem Element stehen soll
      </xsl:element>

      Andreas

  3. Hallo,

    folgende lösung funktioniert leider auch nicht:

    <xsl:variable name="tmp" select="concat('h',$depth)"/>
    <xsl:element name="$tmp">

    kann mir jemand weiterhelfen ?

    <xsl:element name="{$tmp}">
    ...
    </xsl:element>

    MfG, Thomas