Announcement

Collapse
No announcement yet.

Reihenfolge bei XSLT einhalten

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

  • Reihenfolge bei XSLT einhalten

    Hallo Forum,

    ich sitze nach langer Pause mal wieder daran Indesign IDML zu HTML zu transformieren, wozu ich zwei Fragen habe. Hier mal eine Beispiel-Struktur eines solchen IDML-Files - hinter die Inhalte habe ich den z-index geschrieben, der in der HTML-Version per inline CSS zugewiesen werden muss. D.H. das Aufkommen im IDML bestimmt die Ebene in aufsteigender Form:

    Code:
    <document>
       <spread>
          <text></text> <!-- z-index: 1-->
          <bild></bild> <!-- z-index: 2-->
          <text></text> <!-- z-index: 3-->
          <bild></bild> <!-- z-index: 4-->
       </spread>
    </document>
    Ich habe es bis dato nur geschafft, dass mein XSLT erst alle Texte und dann alle Bilder abgrast. Die Reihenfolge ist aber wie o.a. wichtig, wodurch mich ein ständiges "z-index: +1" nicht weiter bringt, denn dann kommt in Pseudo-Code etwa sowas heraus:

    Code:
    <document>
       <spread>
          <text></text> <!-- z-index: +1-->
          <text></text> <!-- z-index: +1-->
          <bild></bild> <!-- z-index: +1-->
          <bild></bild> <!-- z-index: +1-->
       </spread>
    </document>
    Außerdem haben sowohl Text als auch Bild diverse Eigenschaften, die ich auf identische Art und Weise transformiere, wodurch sich der Code immer verdoppelt. Ich spare mir Real-Code an dieser Stelle, denn ich will niemanden erschlagen, wer dennoch gucken möchte dem steht der Quellcode zur Verfügung (s. Zeile 72 -> dort beginnt die Texttransformation; s. Zeile 499 -> dort beginnt die Bild-Transformation).

    Ich möchte also Text und Bild weitestgehend durch einen XSLT-Satz transformieren und dabei noch die Reihenfolge einhalten. Danke für Eure Hilfe. Ich hoffe das ist nicht zuviel des Guten, aber das original Dokument zeigt am ehesten wo mein Problem liegt und ich möchte hier kein ellenlanges Code-Feld aufmachen. Dabei ist auch ein Beispiel IDML-File (XML) - vielleicht kann es ja jemand von Euch helfen.

    Gruss
    Dominik
    Attached Files

  • #2
    Gelöst

    Hallo nochmal,

    ich habe das Ganze jetzt doch lösen können. Dazu rufe ich den Textknoten bzw. Bildknoten nicht mehr direkt auf: <xsl:for-each select="//TextFrame"> bzw. <xsl:for-each select="//Rectangle">...

    sondern über eine Wildcard: <xsl:for-each select="/idPkg:Spread/Spread/*">.

    Innerhalb der Schleife treffe ich dann eine Fallunterscheidung mit: <xsl:if test="ancestor-or-self::Rectangle"> bzw. <xsl:if test="ancestor-or-self::TextFrame">, so dass ich die typenspezifische Ausgabe steuern kann.

    Dann funzt das auch mit dem "z-index: +1" und mein Code ist nur noch halb so groß.

    Gruss
    Dom

    Comment

    Working...
    X