XML Leerzeichen übernehmen

Das Textverarbeitungsprogramm

Moderator: Moderatoren

polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

XML Leerzeichen übernehmen

Beitrag von polo85 »

Guten Tag,

ich passe momentan den xslt Filter von Doc Book nach Open Document für ein Entwicklerhandbuch an und stoße gerade auf folgendes Problem:

Die Zeilenumbruche aus dem XML File erhalte ich per xsl:preserve-space und sind auch in der Datei content.xml zu erkennen. Jedoch werden jene Umbrüche nicht ins *.odt File übernommen! Jetzt wollte ich fragen ob es ein Attribut gibt, das die Zeilenumbrüche und sonstigen Leerraumzeichen beibehält.

Vielen Dank
Michael Polotzek
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Wüsste einer wenigstens an wen ich mich mit diesem Problem wenden könnte?
wfrank
**
Beiträge: 34
Registriert: So, 20.08.2006 17:54
Wohnort: 77855 Achern

Re: XML Leerzeichen übernehmen

Beitrag von wfrank »

das *.odt öffnen, einen Zeilenumbruch einbauen, speichern, im content.xml nachschauen
wie das aussehen muss - ob da ein Muster, ein Unterschied zu erkennen ist ?? Lässt sich damit der
xslt Filter anpassen ?

hilft sowas weiter ?
wf
wfrank
**
Beiträge: 34
Registriert: So, 20.08.2006 17:54
Wohnort: 77855 Achern

Re: XML Leerzeichen übernehmen

Beitrag von wfrank »

vielleicht wars ja ein bischen Unsinn gerade eben -- obwohl:
hab aber noch ein bisschen gegoogelt und man kann wohl
Zeilenumbrüche in XSLT erkennen:
http://www.xmlplease.com/whitespace
und dort
1. Whitespace in a text string
mit replace bzw. translate Funktionen anpacken.

So lese ich das zumindest mal -- hoffe es hilft.

wf
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: XML Leerzeichen übernehmen

Beitrag von lorbass »

polo85 hat geschrieben:Wüsste einer wenigstens an wen ich mich mit diesem Problem wenden könnte?
Ja, an das für solche Fragen eingerichtete Forum OOo Basic und Java.

Gruß
lorbass
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Kann ein Admin diesen Beitrag zum OOo Basic und Java Forum hinzufügen, da ich nicht doppelt posten möchte.
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Also nach dem Tip von wfrank kam ich ein wenig weiter, jedoch hänge an der nächsten Stelle:
Anbei die kritische Codestelle:

Code: Alles auswählen

  <xsl:template match="programlisting">
        <xsl:element name="text:p">
		<xsl:attribute name="text:style-name">Frame contents</xsl:attribute>
		<!-- Zeilenumbruch -->
		<xsl:value-of select="translate(current(),'&#x0A;','?')" />
		<!--Leerzeichen-->
		<xsl:value-of select="translate(current(),'&#x20;','?')" />
        </xsl:element>
    </xsl:template>
Ich weiß nicht mit welchen Zeichen ich den Zeilenumbruch und die Leerzeichen ersetzen muß, damit diese auch im Dokument auftauchen. Der Zeilenumbruch in ODF sieht
<text:p text:style-name="Standard"/>
aus und das Leerzeichen
<text:s text:c="17"/>
wfrank
**
Beiträge: 34
Registriert: So, 20.08.2006 17:54
Wohnort: 77855 Achern

Re: XML Leerzeichen übernehmen

Beitrag von wfrank »

ich hatte mir vorgestellt, dass dein Filter direkt das *.odt, also
irgendwie das content.xml erstellt und hatte daher
gedacht den Zeilenumbruch durch "<text:line-break />"
zu ersetzen.
"<text:line-break />" ist das Element das ooo in ein content.xml
schreibt, wenn man ins Dokument z.B. ein Return reinsetzt und sich
das dann in content.xml anschaut.

(ist das zu brutal gedacht ? )
wf
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Ne der Filter arbeitet anders.
1) Liest das Ursprungsdokument (in meinem Fall Open Book) ein
2) Erstellt mit Hilfe des XSLT-Filters und einer Dokumentenvorlage ein neues Dokument und wandelt die Formatierungen in jene Syntax des ODT Dokuments um. Jedoch ist die Standard Umwandlung sehr spartanisch und kennt nicht die ganze Open Book Befehle.

Und da spring ich ein und versuche das Enddokument mit Hilfe des Filters nach unseren Anforderungen zu erstellen.

Aber im Prinzip hast du schon Recht und arbeite ähnlich wie du es mir vorgeschlagen hast, nur stoße ich eben auf das Problem dass die Zeilenumbrüche in einem bestimmten Kontext auftreten, so dass ich die Zeilenumbruchbefehle nicht einfach durch suchen und ersetzten kann.
wfrank
**
Beiträge: 34
Registriert: So, 20.08.2006 17:54
Wohnort: 77855 Achern

Re: XML Leerzeichen übernehmen

Beitrag von wfrank »

ich hab jetzt verstanden dass es bei content.xml schon zu spät ist -- du
hast ein XML document das über diesen angepassten Filter in den Writer
geladen wird. Und da solls halt schon stimmen.

Mit dem Filter kannst jetzt zwar Zeilenumbrüche erkennen (?) und durch ein Zeichen
ersetzen (?) aber du weisst nicht womit du ersetzen musst damit im Writer ein
Zeilenumbruch kommt. (?)

Du hast keine Stelle an der ein Zeilenumbruch richtig rüberkommt, sonst hättest du ja
dort ablesen können was an diesem Zeilenumbruch in deinem Original anders ist.


So langsam wirds schwierig -- kannst du ein Text Schnipsel als Beispiel
und vielleicht den geänderten Filter oder den Original Filter zur Verfügung
stellen. (Im Idealfall kommst du bei der Gelegenheit von allein auf die Lösung )

wf
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Hi so ähnlich ja, ich gebe diesen Weg langsam ab und werde wohl in den sauren Apfel beißen und sämtliche Dokumente händisch bearbeiten! würg! :?

Aber hier die Codeschnipsel:

Auszug aus Docbook:

Code: Alles auswählen


      <section id="DatenLoggin">
        <title>LOGGING-Sektion</title>

        <para>Diese Sektion ist optional.</para>

        <para>Sofern der <literal>LOGFILENAME</literal> mit einem
        <literal>.</literal> oder <literal>/</literal> beginnt, wird er direkt
        übernommen, andernfalls wird der Inhalt der Environmentvariable
        <literal>$HOME</literal> am Anfang eingefügt.</para>

        <para>Verzeichnisnamen dürfen Unxistyle <literal>/</literal> oder
        OS2-style <literal>\\</literal> getrennt werden, die Trennzeichen
        werden entsprechend dem Betriebssystem angepaßt.</para>

        <para>Falls das Logfile nicht geöffnet werden kann, beendet sich der
        Server.</para>

        <para>Es gibt eine Alterung der Logfiles statt, dafür kann die Anzahl
        der Logfiles <literal>LOGFILECOUNT</literal>.</para>

        <para>Und eine maximale Größe <literal>LOGFILESIZE</literal> angegeben
        werden. Das aktuelle Logfile bekommt eine zusätzliche Endung
        <literal>.000</literal>, die älteren Logfiles bekommen aufsteigende
        Nummern als Endung.</para>

        <programlisting>{LOGGING
   CURRENTDEVICE = FILE # current log-device
   {
        DEVICES # Description of all devices
        {
           FILE
           LOGFILENAME = log/bas.log
           LOGFILECOUNT = 5 # maximum number of logfiles created
           # before reuse occurs
           LOGFILESIZE = 25000000 # maximum filesize in bytes
           ADDPROCESSID = FALSE
        }
   }
}        </programlisting>
      </section>

Das XSLT:

Code: Alles auswählen

<xsl:template match="programlisting">
        <xsl:element name="text:p">
		<xsl:attribute name="text:style-name">Frame contents</xsl:attribute>
		<xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
Das erwartete Ergebnis mit dem pdf , das die Vorlage für ODT ist beigefügt!
nachtrag: Irgendwie kann ich das jpg nicht hochladen bzw. wird nicht angezeigt!

Vielleicht findet da noch wer die Lösung.
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Anbei die Darstellung des bisher verwendeten PDF generators.
Dateianhänge
So sollte die endgütige Fassung als ODT aussehen.
So sollte die endgütige Fassung als ODT aussehen.
AuszugPDF.jpg (40.03 KiB) 3301 mal betrachtet
wfrank
**
Beiträge: 34
Registriert: So, 20.08.2006 17:54
Wohnort: 77855 Achern

Re: XML Leerzeichen übernehmen

Beitrag von wfrank »

noch was zum schnellen testen: funktioniert ein
<literallayout>blab bla
bla bla </literallayout>
Konstrukt ??


Quelle: http://www.hoferichter.net/index.php?id ... lenumbruch

wf
polo85
*
Beiträge: 12
Registriert: Fr, 28.08.2009 09:32

Re: XML Leerzeichen übernehmen

Beitrag von polo85 »

Also mein xslt kennt dieses Konstrukt nicht ist aber auch irrelevant, da die docBook Dokumente bereits existieren und ich jene nicht vorher abändern möchte bevor ich in sich nach odt umwandle!
wfrank
**
Beiträge: 34
Registriert: So, 20.08.2006 17:54
Wohnort: 77855 Achern

Re: XML Leerzeichen übernehmen

Beitrag von wfrank »

vielleicht fällt ja noch jemand was dazu ein

--- ich kenn jetzt nur einen Workaround, den ich erstmal verwenden würde, damit es handhabbar fertig wird:

Code: Alles auswählen

    <xsl:template match="programlisting">
            <xsl:element name="text:p">
          <xsl:attribute name="text:style-name">Frame contents</xsl:attribute>

 <!-- Zeilenumbruch -->
      <xsl:value-of select="replace(current(),'&#x0A;','<literal>mybreak</literal>')" />

           <!-- <xsl:apply-templates/> -->
            </xsl:element>
        </xsl:template>
    </xsl:stylesheet>
im Oo-Dokument sieht das dann so aus:
{LOGGING<literal>mybreak</literal> CURRENTDEVICE = FILE

und dann mit Suchen - Ersetzen:
Suche : <literal>mybreak</literal>
Ersetze: \n
unter Optionen muss "Regulärer Ausdruck angeklickt sein".

Damit kann man dann alle Suchen und alle auf einen Schlag ersetzen -- wenn man mutig ist.
(ich klick mich da immer erst von einem zum anderen durch... )


aber vielleicht machst du das ja schon so oder so ähnlich ...

wf


P.S. ist ja vielleicht ein bisschen hart was wir da wollen
Antworten