Announcement

Collapse
No announcement yet.

Problem bei Zeilenumbrüche hinter Attributwerten

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

  • Problem bei Zeilenumbrüche hinter Attributwerten

    Hallo,

    ich transformiere mittels XSLT ein XMI Dokument (XML Austauschformat für UML Diagramme) in ein SVG ähnliches Dokument.

    Die Zielplattform hat Probleme die erzeugten SVG zu lesen, wenn nach den Attributwerten Zeilenumbrüche und Einrückungen eingefügt werden. Dies geschieht dann ,wenn die Templateregel zu lang und indent="yes" in <xsl: output> gesetzt ist.

    Die volle Regel:
    Code:
    <xsl:output method="xml" encoding="ISO-8859-1" indent="yes" />
    Nur wenn ich indent="no" setze und damit ganz auf zeilenumbrüche verzichte, kann die Zielplattform die Dateien auch nicht einlesen.


    Ich brauch also eine Lösung die zwar Zeilenumbrüche und eventuell auch Einrückungen hinter Template Regeln generiert aber keine Zeilenumbrüche und Einrückungen hinter einzelnen Attributen eines Templates.

    Wie kann ich das erreichen?


    Vielen Dank im voraus!

    Gruß
    Starbuck

  • #2
    Du meinst Ausgaben in der Form

    <elem
    attr1="wert"
    attr2="wert"
    attr3="wert"
    >
    ...
    </elem>

    ?

    Ich wüsste keinen Prozessor, der so vorgeht, egal was bei indent steht (indent ist übrigens eher ein Wunsch an den Prozessor, den dieser aber nicht umsetzen muss).

    Zeige mal die Code-Stellen zur Attributausgabe. Ich vermute mal, dass es unnötige xsl:attribute-Konstrukte gibt.

    Comment


    • #3
      Also als Prozessor nutze ich Saxon, Die Transformation geschieht aus einem Java Programm und ich arbeite in einem Linux System.

      Die Ausgabe sieht zum Beispiel so aus:

      Code:
      <library xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.mldesigner.com/mld"
               gid="_7ccsEJgkEdyeXNcvzS14Kw"
               name="Libname"
               version="2.7.r00">
      Das Problem sind halt die seltsamen Zeilenumbrüche bzw Einrückungen vor gid, name und version. Die Einrückungen macht er nur, wenn das Template zu lang für die Zeile ist. Dann rückt er aber komischerweise jedes Attribut einzeln in eine neue Zeile ein.

      Hier ist die zugehörige XSL Regel, die das ganze erzeugt:

      Code:
      <xsl:output method="xml" encoding="ISO-8859-1" indent="yes" use-character-maps="sonderzeichen"/>
      	<xsl:param name="library_name" select="defaultwert"/>
      	<xsl:template match="//uml:Model">
      		<library gid="{@xmi:id}" name="{$library_name}" version="2.7.r00" xmlns="http://www.mldesigner.com/mld" xmlns:svg="http://www.w3.org/2000/svg">
      ....
      Haben eigentlich Einrückungen innerhalb der XSL Datei irgendwelche Auswirkungen auf die Ausgabe?

      Comment


      • #4
        Dann lässt sich vielleicht Saxon noch konfigurieren. Vielleicht hilft auch dieser Artikel zum Thema Whitespace.

        Wenn es gar nicht anders geht, wäre die Ausgabe des problematischen Starttags beim betreffenden Element mittels xsl:text eine Alternative. Dann sollte die gesamte Zeichenkette zusammen bleiben.

        xsl:element + xsl:attribute könnten es auch bringen, was hier natürlich auch keine schöne Lösung darstellt ...

        Comment

        Working...
        X