Announcement

Collapse
No announcement yet.

Zeilenumbruch entfernen

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

  • Zeilenumbruch entfernen

    Guten Tag,

    ich weiß, dass es hier diese Thema schon gibt allerdings wurde ich daraus nicht schlau und es ist von 2008, daher war ich mir nicht sicher ob das noch beantwortet wird.

    Folgendes:

    Ich habe ein XML Grundgerüst:

    HTML Code:
    <?xml version="1.0"?>
    <adressbuch>
    	<daten id="">
    		<THEMEN_BEZEICHNUNG></THEMEN_BEZEICHNUNG>
    		<STICHWOERTER_BEZEICHNUNG></STICHWOERTER_BEZEICHNUNG>
    		<BEZEICHNUNG1></BEZEICHNUNG1>
    		<BEZEICHNUNG2></BEZEICHNUNG2>
    		<BEZEICHNUNG3></BEZEICHNUNG3>
    		<STRASSE></STRASSE>
    		<PLZ></PLZ>
    		<ORT></ORT>
    		<TELEFON></TELEFON>
    		<TELEFAX></TELEFAX>
    		<EMAIL></EMAIL>
    		<INTERNET></INTERNET>
    	</daten>
    </adressbuch>
    Dieses Lade ich in Excel rein und ordne es den Daten zu und erstelle über Excel eine neue XML, die dann die Daten so weiter ausfüllt und mir dann diese XML ausspuckt:

    HTML Code:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <adressbuch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    	<daten id="1">
    		<THEMEN_BEZEICHNUNG>Thema</THEMEN_BEZEICHNUNG>
    		<STICHWOERTER_BEZEICHNUNG>Stichwort</STICHWOERTER_BEZEICHNUNG>
    		<BEZEICHNUNG1>Bezeichnung</BEZEICHNUNG1>
    		<BEZEICHNUNG2>Bezeichnung_2</BEZEICHNUNG2>
    		<STRASSE>Strasse</STRASSE>
    		<PLZ>12345</PLZ>
    		<ORT>Musterstadt</ORT>
    		<TELEFON>01234/56789</TELEFON>
    		<TELEFAX>01234/567890</TELEFAX>
    		<EMAIL>[email protected]</EMAIL>
    		<INTERNET>www.muster.de</INTERNET>
    	</daten>
    </adressbuch>
    der macht dann halt für alle adressen dieses Format.

    Diese Sachen lade ich dann in InDesign und pflege diese dann entsprechend ein, allerding habe ich dabei ein Problem:

    Ich möchte aber nicht direkt alles voll haben mit Harten Zeilenumbrüchen, sondern in etwa so:

    HTML Code:
    <?xml version="1.0"?>
    <adressbuch>
    		<daten id="">
    		<THEMEN_BEZEICHNUNG></THEMEN_BEZEICHNUNG>&#xA;
    		<STICHWOERTER_BEZEICHNUNG></STICHWOERTER_BEZEICHNUNG>&#xA;
    		<BEZEICHNUNG1></BEZEICHNUNG1>&#x2028;<BEZEICHNUNG2></BEZEICHNUNG2>&#x2028;<BEZEICHNUNG3></BEZEICHNUNG3>&#x2028;<STRASSE></STRASSE>&#x2028;<PLZ></PLZ>&#x2028;<ORT></ORT>&#x2028;<TELEFON></TELEFON>&#x2028;<TELEFAX></TELEFAX>&#x2028;<EMAIL></EMAIL>&#x2028;<INTERNET></INTERNET>
    	</daten>
    </adressbuch>
    &#x2028; = weicher Zeilenumbruch
    &#xA; = harter Zeilenumbruch

    wenn ich dies allerdings schon ins Grundgerüst einbaue und nachher in Excel exportiere löscht er "&#xA;" oder "&#x2028;" wieder raus!

    Ich habe gelesen, dass es mit XSLT möglich ist, es so auszuspucken, dass die Umrbüche so deklariert sind.

    HTML Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="2.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      
      <xsl:strip-space elements="*"/>
      
      <xsl:output method="xml" encoding="ISO-8859-1"/>
      
      <xsl:template match="@*|node()">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
    </xsl:template>  
      
      <xsl:template match="adressbuch">
        <xsl:text>&#xA;</xsl:text>  <!-- (1) -->
        <xsl:copy>
          <xsl:text>&#xA;</xsl:text> <!-- (2) -->
          <xsl:apply-templates/>
        </xsl:copy>
      </xsl:template>
     
    </xsl:stylesheet>
    habe ich jetzt dazu gefunden aber ich kann da jetzt nicht sooo viel mit anfangen also ich sag mal so ich versteh es nicht ganz

    Was ich von euch jetzt brauche ist, ob das damit funktioniert und wie das dann dafür aussieht bzw. welche funktionen ich dafür benötige.

    Vielen lieben dank!

  • #2
    Kann mir denn hier niemand irgendwie sagen wie ich durch quasi "Suchen und Ersetzen" von:

    HTML Code:
    <?xml version="1.0"?>
    <adressbuch>
        <daten id="">
            <THEMEN_BEZEICHNUNG></THEMEN_BEZEICHNUNG>
            <STICHWOERTER_BEZEICHNUNG></STICHWOERTER_BEZEICHNUNG>
            <BEZEICHNUNG1></BEZEICHNUNG1>
            <BEZEICHNUNG2></BEZEICHNUNG2>
            <BEZEICHNUNG3></BEZEICHNUNG3>
            <STRASSE></STRASSE>
            <PLZ></PLZ>
            <ORT></ORT>
            <TELEFON></TELEFON>
            <TELEFAX></TELEFAX>
            <EMAIL></EMAIL>
            <INTERNET></INTERNET>
        </daten>
    </adressbuch>
    zu:

    HTML Code:
    <?xml version="1.0"?>
    <adressbuch>
        <daten id="">
            <THEMEN_BEZEICHNUNG></THEMEN_BEZEICHNUNG>&#xA;<STICHWOERTER_BEZEICHNUNG></STICHWOERTER_BEZEICHNUNG>&#xA;<BEZEICHNUNG1></BEZEICHNUNG1>&#x2028;<BEZEICHNUNG2></BEZEICHNUNG2>&#x2028;<BEZEICHNUNG3></BEZEICHNUNG3>&#x2028;<STRASSE></STRASSE>&#x2028;<PLZ></PLZ>&#x2028;<ORT></ORT>&#x2028;<TELEFON></TELEFON>&#x2028;<TELEFAX></TELEFAX>&#x2028;<EMAIL></EMAIL>&#x2028;<INTERNET></INTERNET>
        </daten>
    </adressbuch>
    komme?

    ich habs schon mit "translate" probiert aber der ersetzt ja nur innerhalb der Tags, wie ich das jetzt verstanden habe und auch nur einzelne Zeichen.

    Replace funktioniert erst ab 2.0 allerdings wollt ich bei 1.0 bleiben wenns geht.

    Ansonsten muss ich es über ein Makro machen in Word aber das halte ich für ziemlich müssig erst den Text aus der XML in Word und dann wieder in eine neue XML kopieren

    Comment


    • #3
      Die Ausgabe von & # x A; lässt sich nicht erzwingen, da wird üblicherweise einfach das Zeichen ausgegen, nicht eine Zeichenreferenz.
      Die Ausgabe von & # x 2028; lässt sich auch nicht erzwingen, allerdings kann man durch Auswahl eines Ausgabeencodings, dass das Zeichen nicht enthält, den XSLT-Prozessor zwingen, eine Zeichenreferenz zu benutzen. Ob die aber dezimal oder hexadezimal ist, bleibt dem Prozessor überlassen.
      So ganz verstehe ich nicht, was du erreichen willst und wozu das gut ist, aber mit
      Code:
      <xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        version="1.0">
        
        <xsl:output method="xml" indent="no" encoding="ISO-8859-1"/>
        
        <xsl:template match="@* | node()">
          <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
          </xsl:copy>
        </xsl:template>
      
        <xsl:template match="daten/text()[preceding-sibling::THEMEN_BEZEICHNUNG and following-sibling::BEZEICHNUNG1]">
          <xsl:text>&#xA;</xsl:text>
        </xsl:template>
        
        <xsl:template match="daten/text()[preceding-sibling::BEZEICHNUNG1 and following-sibling::INTERNET]">
          <xsl:text>&#x2028;</xsl:text>
        </xsl:template>
        
      </xsl:stylesheet>
      und Saxon 6.5.5 erhalte ich als Ausgabe
      Code:
      <?xml version="1.0" encoding="ISO-8859-1"?><adressbuch>
          <daten id="">
              <THEMEN_BEZEICHNUNG/>
      <STICHWOERTER_BEZEICHNUNG/>
      <BEZEICHNUNG1/>
<BEZEICHNUNG2/>
<BEZEICHNUNG3/>
<STRASSE/>
<PLZ/>
<ORT/>
<TELEFON/>
<TELEFAX/>
<EMAIL/>
<INTERNET/>
          </daten>
      </adressbuch>
      was deiner Anforderung nahe kommt.

      Comment


      • #4
        Ja also folgendes in InDesign packt der hinter jeden Tag ein harten zeilenumbruch "^p" und dann übernimmt er nicht die Absatzformate. Deshalb muss ich die in einen weichen Umbruch basteln "^n" (ist das glaube ich). Und InDesign kann &#x2028; und &#xA; auslesen.

        Comment


        • #5
          Probiere mal das Stylesheet, das ich gepostet habe. Ich sehe gerade, dass die Forumsoftware das von mir gepostete Resultat nicht richtig dargestellt hat, zwischen den Elementen steht schon
          Code:
          & # 8232;
          halt dezimal codiert, nicht hexadezimal, aber leider hat das Forum das verschluckt und gar nichts angezeigt.

          Comment


          • #6
            Danke funktioniert hervorragend jetzt muss ich nur noch die Tabulatoren in InDesign mit Suchen und ersetzen entfernen und es funktioniert vielen lieben dank

            Comment

            Working...
            X