torstene
Goto Top

Einzelne Buchstaben in XML Format mitgeben

Wie können für einzelne Buchstaben im XML-Format dessen Formate mitgegeben werden.

Wie kann ich bei Produktnamen wie z.B "Produkt°" oder "Produkt m²" oder Produkt° m²" die Formatierung "hochgestellt" und "tiefgestellt" bei einzelnen Zeichen mitgeben.
Da es sich teilweise um komplette Worte handelt, welche hoche/tiefgestellt sind, geht es nicht mit Ssonderzeichen

Die ganze XML-Datei wird dann in InDesign imporiert, vielleicht hilft die Info weiter.

Torsten.E

Content-Key: 202252

Url: https://administrator.de/contentid/202252

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: dog
dog 23.02.2013 aktualisiert um 19:00:46 Uhr
Goto Top
Dafür musst du dir einen hochgestellt Tag definieren und den in InDesign auf den entsprechenden Stil mappen.
Produkt<H>TM</H>

Oder du lädst den InDesign Namespace in das XML und kannst dann Styles beim Import anwenden:
1/4 cup Raisins, <Emphasis aid:cstyle="italics">if desired</Emphasis>  
Mitglied: TorstenE
TorstenE 23.02.2013 um 19:12:34 Uhr
Goto Top
Das Produkt hat doch schon einen Tag
<produktname>MeinProdukt</produktname>

Ein <?> Tag innerhalb eines bestehenden Tags, geht doch gar nicht bzw. ist nicht zulässig, oder ??
<produktname>MeinPr<H>odu</H>kt</produktname>

oder:
<produktname>MeinPr<Emphasis aid:cstyle="italics">kt</Emphasis></produktname>  
Mitglied: dog
dog 23.02.2013 um 19:46:36 Uhr
Goto Top
Natürlich geht das.
Habe ich grade erst ausprobiert.
Mitglied: TorstenE
TorstenE 23.02.2013 um 21:07:45 Uhr
Goto Top
Ich habe genau Dein Beispiel genommen für cstyle habe ich ein vorhandenes Zeichenformat benutzt. Klappt nicht er motzt mit "Ungebundenes Namespace Präfix"
Lasse ich die Anweisung weg, funktioniert ist, wie bisher auch.
Mitglied: dog
dog 24.02.2013 um 06:11:44 Uhr
Goto Top
motzt mit "Ungebundenes Namespace Präfix"

Die Fehlermeldung ist doch sehr eindeutig.
Du hat das Präfix aid: nicht importiert.

http://carijansen.com/2011/02/25/indesign-xml-part-2/ (Such nach XMLNS)
Mitglied: TorstenE
TorstenE 24.02.2013 um 09:49:19 Uhr
Goto Top
Guten Morgen,

die zugehörige XSL-Datei schaut
am Anfang wie folgt aus

<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
	xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"  
	xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/"   
    version="1.0">  
    
    <xsl:output method="xml" indent="no"/>  
    <xsl:strip-space elements="*"/>  
    
    <xsl:template match="/">  
        <preisliste> 
.......

Ja ich weis, weshalb schreib ich dann die Format Anweisung in die XML-Datei wenn ich eine XSL-Datei habe.
Weil ich suchen und ersetzen in der XSL-Datei noch nicht "kann".
Und da ich die XML-Datei mit PHP erstelle, dachte ich, damit ich schnell ein Ergebnis habe ich schreib es einfach da mit rein, damit es wenigstens "lauffähig" fertig ist.

In der XML-Datei währe mir folgendes lieber:
<produktname>Produkt<sub>NameHochgestellt</sub></produktname>

Und die XSL-Datei fummelt daraus:
<produktname>Produkt<hoch aid:cstyle="hoch">NameHochgestellt</hoch></produktname>  
Mitglied: Guenni
Guenni 24.02.2013 um 10:24:18 Uhr
Goto Top
Hi TorstenE,

vielleicht klappts ja mit CSS.

<html>
<head>
<title>Untitled</title>
<style type="text/css">  
<!-- 
.hoch{
vertical-align:super;
font-style:italic;
color:red;
font-size:70%;
}
.tief{
vertical-align:sub;
font-style:italic;
color:blue;
font-size:70%;
-->
</style>
</head>
<body>
<h3>Der Produkt<font class = "hoch">Name</font> ist HTML<font class="tief">CSS</font></h3>  
</body>
</html>


Gruß
Günni
Mitglied: TorstenE
TorstenE 24.02.2013 um 10:30:55 Uhr
Goto Top
Hey Günni, danke für Deine Antwort.

Es geht darum Daten welche aus einer SQL-Datenbank kommen an InDesign zu übergeben (Preisliste).
Das klappt soweit fast alles nur eben geht es um die hoch-/tiefgestellten Zeichen, bzw. Wörter.
Ich hole die Daten per PHP aus der SQL-Datenbank und erstelle daraus ein XML-Datei.
Soweit eigentlich mein Part.

ABER: Damit das über XML/XSL auch in InDesign reinläuft muss die XML-Datei natürlich so passen,
dass die XSL-Datei damit was anfangen kann.
Und im Augenblick hängt es daran, wie kennzeichne ich hochgestellt in der XML-Datei so
dass die XSL-Datei in ein entsprechendes Format umwandeln kann.
Bzw. wie wandel ich es dann in der XSL-Datei entsprechend um.
Mitglied: Guenni
Guenni 24.02.2013 aktualisiert um 12:22:57 Uhr
Goto Top
Hi TorstenE,

mit XML hab' ich mich mal kurz beschäftigt, deshalb kann ich jetzt nur raten, ob das so richtig ist.

Ich hab' mal ein Beispiel von der Seite http://de.selfhtml.org/ etwas umgeändert, vielleicht passts ja.

Die Datei template.xsl:

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
 <html>
 <head>
 </head>
 <body>
  <xsl:apply-templates />
 </body>
 </html>
</xsl:template>

<xsl:template match="titel"> 
 <h3><xsl:value-of select="." /></h3> 
</xsl:template>

<xsl:template match="produkt"> 
 <font style="font-family:verdana;"><xsl:apply-templates /></font> 
</xsl:template>

<xsl:template match="hoch"> 
 <font style="color:blue;vertical-align:super;font-size:70%;font-style:italic;"><xsl:apply-templates /></font> 
</xsl:template>

<xsl:template match="tief"> 
 <font style="color:red;vertical-align:sub;font-size:70%;font-style:italic;"><xsl:apply-templates /></font> 
</xsl:template>

</xsl:stylesheet>


Diese Datei wird in die Datei demo.xml eingebunden:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="template.xsl" ?> 
<test>
 <titel>Demo Hoch Tief</titel>
 <produkt>Der Produkt <hoch>Name</hoch> ist XML <tief>XSL-CSS</tief></produkt>
</test>


Gruß
Günni
Mitglied: TorstenE
TorstenE 24.02.2013 um 13:40:25 Uhr
Goto Top
Güni wird sind ganz na drann. Deine Lösung funktioniert, aber meine XSL schaut anders aus und da klappt es nicht ganz

...
<name>
   <xsl:value-of select="name" />  
</name>
<firma>
   <xsl:value-of select="firma" />  
</firma>
...

Wie rufe ich jetzt praktisch dein "Sub-Template" innerhalb von "<name>" ?

...
<name>
   <xls: apply-templates/>
</name>
...
Das funktioniert schon, aber dann rattert es mir durch die ganze XML-Datei durch und in Name steht praktisch der Rest der XML-Datei. Ich will aber nur den Content von Name praktisch in das Sub-Template schicken um den <hoch></hoch> Tag zu ersetzen

Es fehlt nur noch eine Kleinigkeit

Bis hierher super vielen Dank an alle.
Mitglied: dog
dog 24.02.2013 um 19:11:15 Uhr
Goto Top
Warum mühst du dich jetzt mit XSLT ab, wenn du schon den Luxus hast die XML-Datei so zu erzeugen, wie du sie brauchst? face-monkey
Mitglied: TorstenE
TorstenE 24.02.2013 um 19:45:40 Uhr
Goto Top
Jetzt habe ich den ganzen Tag rumgefummelt und Günni hatte die Lösung

alt:
...
<name>
   <xsl:value-of select="name" />  
</name>
<firma>
   <xsl:value-of select="firma" />  
</firma>
...

neu:
...
<name>
   <xsl:apply-templates select="name" />  
</name>
<firma>
   <xsl:value-of select="firma" />  
</firma>
...
<xsl:template match="sub">  
   <hochgestellt aid:cstyle="hochgestellt"><xsl:value-of select="." /></hochgestellt>  
</xsl:template>
...
Mein Fehler war, bzw. ich wusste es nicht, dass man an apply-templates den Inhalt des Tags "name" mitgeben kann.

aus:
...
<name>MeinProdukt <sub>Copyright</sub> gehoert jetzt mir</name>
...

wird jetzt:
...
<name>MeinProdukt <hochgestellt aid:cstyle="hochgestellt">Copyright</hochgestellt> gehoert jetzt mir</name>  
...

Warum ich mir die Mühe mache mit der XSL-Datei. Weil ich kein InDesign Format mit PHP erstellen will. Sollte sich irgend etwas ändern, muß ich es umprogrammieren, so muß nur die XSL-Datei geändert werden.
Ich denk Daten und Design einfach so weit als möglich trennen ist der richtige Weg.

Danke für die Hilfe

Torsten.E