Simona: XML für Excel formatieren mit XSLT

Hallo!

Ich habe eine XML-Datei mit Daten, die ich in Excel formatiert darstellen möchte. Dazu habe ich eine XSLT-Datei geschrieben.

Die Daten werden (mehr oder weniger) wie gewünscht dargestellt. Allerdings sind vor jedem Datensatz 17 Leerzeichen in jeder Zeile in Excel.

Die Leerzeichen sind in der XML-Datei nicht vorhanden.
Da es sich in jeder Zeile/Spalte immer um 17 Leerzeichen handelt, habe ich schon überlegt ich unbewusst etwas wie einen Tab einfüge.

Werden bestimmte Steuerzeichen durch XSLT vielleicht in Leerzeichen konvertiert?

Kann mir jemand einen Tip geben.

Mit der Funktion normalize-space() habe ich bereits versucht die Leerzeichen zu eliminieren, aber sie stecken nicht in der Variablen die ausgegeben wird.

Auszug aus XML:
<Tupel>
    <SPARTE>Gas</SPARTE>
    <NETZGEBIET>Brandenburg/Rügen</NETZGEBIET>
    <NETZREGION>Brandenburg/Rügen</NETZREGION>
    <BEZIRKSMEISTEREI>Königs Wusterhausen</BEZIRKSMEISTEREI>
    <GEMEINDE>Kallinchen</GEMEINDE>
    <ORTSTEIL>-</ORTSTEIL>
    <NETZTYP>Hochdruck Gas</NETZTYP>
    <LEITUNGSTYP>THD84</LEITUNGSTYP>
    <KM_LEITUNGSLAENGEN>2.432</KM_LEITUNGSLAENGEN>
    <HAUSANSCHLUESSE></HAUSANSCHLUESSE>
</Tupel>

Auszug aus XSLT:
<xsl:template match="Tupel">
   <ss:Row ss:StyleID="3">
        ss:Cell
            <xsl:variable name="str">
               <xsl:value-of select="SPARTE"/>
            </xsl:variable>
            <ss:Data ss:Type="String">
               <xsl:value-of select="normalize-space($str)" />
            </ss:Data>
        </ss:Cell>
        ss:Cell
            <ss:Data ss:Type="String">
                <xsl:value-of select="NETZGEBIET" />
            </ss:Data>
        </ss:Cell>

Bitte um Hilfe!
Gruß Simona

  1. Hallo,

    <xsl:value-of select="normalize-space($str)" />

    ^^^^^^^^^^^^^^^^
    Vermutlich wird der gekennzeichnete Whitespace bei der Ausgabe uebernommen. Versuche es mal ohne und pruefe, ob <xsl:output indent="no" /> beim Prozessor eine Wirkung hat.

    MfG, Thomas

    1. Hallo,

      <xsl:value-of select="normalize-space($str)" />

      ^^^^^^^^^^^^^^^^
      Vermutlich wird der gekennzeichnete Whitespace bei der Ausgabe uebernommen. Versuche es mal ohne und pruefe, ob <xsl:output indent="no" /> beim Prozessor eine Wirkung hat.

      MfG, Thomas

      Vielen Dank Thomas für deine Antwort.
      Ich habe indent auf "NO" gesetzt, das hörte sich auch sehr vielversprechend an, hat aber leider keine Wirkung gezeigt.

      Der Kopf der XSLT-Datei sieht nun folgendermaßen aus:
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
      <xsl:output indent="no" />
      <!-- match the root and produce the requisite root Excel Xml stuff -->
      <xsl:template match="/">
          ss:Workbook
              ss:Styles

      Waren in deiner Antwort 2 Möglichkeiten beschrieben? Dein Text: "Vermutlich wird der gekennzeichnete Whitespace bei der Ausgabe uebernommen. Versuche es mal ohne und pruefe...". Es ohne den Whitespce probieren verstehe ich nicht. Sorry. Oder war der Tag xsl:indent="no" die technische Umsetzung dieses Vorschlags?

      Ich wäre dir echt dankbar wenn du mir weiterhelfen könntest!

      Gruß Simona

      1. Hallo,

        Es ohne den Whitespce probieren verstehe ich nicht.

        Schreibe z. B.

                    <ss:Data ss:Type="String">  
                        <xsl:value-of select="NETZGEBIET" />  
                    </ss:Data>
        

        so
        <ss:Data ss:Type="String"><xsl:value-of select="NETZGEBIET" /></ss:Data>

        Der Umbruch nach dem Starttag und der Leerraum vor dem xsl:value-of ergeben fuer mich ziemlich genau die genannten 17 Leerzeichen vor dem eigentlichen Inhalt.

        MfG, Thomas

        1. Super!!!!
          Genau das war das Problem.
          Ich wäre nieeee darauf gekommen das mein eigenes Einrücken zu diesen Leerzeichen führt.

          DANKE!