[GastForen Programmierung/Entwicklung PHP und MySQL xslt - Feldformatierungen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

xslt - Feldformatierungen

Neuling1234
Beiträge gesamt: 2

30. Sep 2018, 20:45
Beitrag # 1 von 3
Bewertung:
(34329 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich bin in der html-Progammierung nicht so wissend.

Ein bestehendes Programm habe ich um eigene Felder erweitert, diese werden auch angezeigt.

Nun möchte ich diese Anzeige noch formatieren und weiss nicht so recht wie.

Hier erstmal der Programmausschnitt:

Code
  <xslt:template name="Company"> 
<xslt:param name="Company"/>
<xslt:param name="Department"/>
<xslt:param name="CustomerID"/>
<xslt:param name="Custom0"/>
<xslt:param name="Custom1"/>
<xslt:param name="Custom2"/>
<xslt:param name="Custom3"/>
<xslt:param name="Custom4"/>
<xslt:param name="Custom5"/>
<xslt:param name="Custom6"/>
<xslt:if test="$Company != ''">
<tr><td class="boldfont"><xslt:value-of select="concat($Company, ' ', $Department)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($CustomerID) != ''">
<tr><td><xslt:value-of select="concat('laufende Nr.: ', $CustomerID)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom0) != ''">
<tr><td><xslt:value-of select="concat('Anzahl: ', $Custom0)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom1) != ''">
<tr><td><xslt:value-of select="concat('letzter Kontakt: ', $Custom1, ' ', $Custom2)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom3) != ''">
<tr><td><xslt:value-of select="concat('App: ', $Custom3)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom4) != ''">
<tr><td><xslt:value-of select="concat('offene ZU: ', $Custom4)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom5) != ''">
<tr><td><xslt:value-of select="concat('Format: ', $Custom5)"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom6) != ''">
<tr><td><xslt:value-of select="concat('Notiz: ', $Custom6)"/></td></tr>
</xslt:if>
</xslt:template>


folgende Formatierungen möchte ich nun noch vornehmen:

- Die Texte, wie z.B. "laufende Nr.:", sollen Fett geschrieben werden (der folgende Variableninhalt aber nicht).

- zwischen den Feldern "Custom1" und "Custom2" sollen 3 Leerzeichen sein (egal wieviel man vorgibt, in der Ausgabe erscheint immer nur eines).

- das Feld "Custom2" ist ein Datum und die Ausgabe erfolgt im Format: "2018-09-30 00:00:00.0", ich hätte gern "30.09.2018".

- das Feld "Custom0" ist eine Ganzzahl, diese hätte ich gern mit Tausenderpunkt.

- und wenn man den Variablenfelder noch spaltenmäßig den gleichen Anfangspunkt geben könnte, dann wäre es perfekt.


vielleicht hat ein Experte für die Eine oder Andere Sache eine Lösung parat. Das wäre supertoll!

LG vom Neuling
X

xslt - Feldformatierungen

crisies
  
Beiträge gesamt: 138

2. Okt 2018, 21:43
Beitrag # 2 von 3
Beitrag ID: #566652
Bewertung:
(34287 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Neuling,

Das ist generell kein HTML sondern XSL(T) und darüber macht man aus XML etwas anderes (hier in Deinem Fall wiederum HTML). Wichtiger als HTML wäre hier das Wissen zu XML, XSLT + XPATH usw.

Was ich aber generell sagen kann, warum machst Du nicht alles was HTML ist, ausserhalb der XSLT Tags? Als Beispiel:

Antwort auf: - Die Texte, wie z.B. "laufende Nr.:", sollen Fett geschrieben werden (der folgende Variableninhalt aber nicht).


Code
    <xslt:if test="normalize-space($CustomerID) != ''">  
<tr><td><b>laufende Nr.:</b> <xslt:value-of select="$CustomerID"/></td></tr>
</xslt:if>


Antwort auf: - zwischen den Feldern "Custom1" und "Custom2" sollen 3 Leerzeichen sein (egal wieviel man vorgibt, in der Ausgabe erscheint immer nur eines).


Code
    <xslt:if test="normalize-space($Custom1) != ''">  
<tr><td><b>letzter Kontakt:</b> <xslt:value-of select="$Custom1"/> <xslt:value-of select="$Custom2"/></td></tr>
</xslt:if>


=> evtl. braucht es hier anstatt einem Leerschlag ein
Code
&nbsp; 

damit das auch korrekt angezeigt wird.

Antwort auf: - das Feld "Custom2" ist ein Datum und die Ausgabe erfolgt im Format: "2018-09-30 00:00:00.0", ich hätte gern "30.09.2018".


=> Zuerst kommt es hier auf die gewählte XSL Version an und zweitens wie das Datum im XML geliefert wird. Hier findest Du evlt. weitere Infos dazu https://stackoverflow.com/...-date-format-in-xslt

Antwort auf: - das Feld "Custom0" ist eine Ganzzahl, diese hätte ich gern mit Tausenderpunkt.


=> Die gewünschte Funktion aus XSL verwenden https://www.w3schools.com/...unc_formatnumber.asp

Antwort auf: - und wenn man den Variablenfelder noch spaltenmäßig den gleichen Anfangspunkt geben könnte, dann wäre es perfekt.


=> Das verstehe ich nicht. Aktuell hast Du ja jeweils pro Variabel eine eigene Tabellen-Reihe tr. Sonst müsstest Du nur eine tr machen und dann fix die td (immer diesselbe Anzahl) und dann würdest das xslt:if soweit weglassen oder nur innerhalb der td machen.

lg
chris.w.


als Antwort auf: [#566597]

xslt - Feldformatierungen

Neuling1234
Beiträge gesamt: 2

3. Okt 2018, 15:05
Beitrag # 3 von 3
Beitrag ID: #566657
Bewertung:
(34264 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Chris,

danke für deine Antwort.

Deine Beispiele und Links haben mir sehr weitergeholfen.
Code
 </xslt:template> 
<xslt:decimal-format name="de" decimal-separator="," grouping-separator="."/>
<xslt:template name="Company">
<xslt:param name="Company"/>
<xslt:param name="Custom0"/>
<xslt:param name="Custom1"/>
<xslt:param name="Custom2"/>
<xslt:param name="Custom3"/>
<xslt:param name="Custom4"/>
<xslt:param name="Custom5"/>
<xslt:param name="Custom6"/>
<xslt:if test="$Company != ''">
<tr><td class="boldfont"><xslt:value-of select="$Company"/></td></tr>
</xslt:if>
<table border="1">
<xslt:if test="normalize-space($Custom0) != ''">
<tr><td>Einwohner: </td><td><xslt:value-of select="format-number($Custom0, '###.###', 'de')"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom1) != ''">
<tr><td>Kontakt: </td><td><xslt:value-of select="substring($Custom2,9,2)"/>.<xslt:value-of select="substring($Custom2,6,2)"/>.<xslt:value-of select="substring($Custom2,3,2)"/> [<xslt:value-of select="$Custom1"/>]</td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom3) != ''">
<tr><td>App: </td><td><xslt:value-of select="$Custom3"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom4) != ''">
<tr><td>offene ZU: </td><td><xslt:value-of select="$Custom4"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom5) != ''">
<tr><td>Gef&#252;hl: </td><td><xslt:value-of select="$Custom5"/></td></tr>
</xslt:if>
<xslt:if test="normalize-space($Custom6) != ''">
<tr><td valign="top">Notiz: </td><td><xslt:value-of select="$Custom6"/></td></tr>
</xslt:if>
</table>
</xslt:template>


... letztendlich sind die Änderungen maginal, aber es hat schon einige Stündchen gedauert, bis ich jedes Detail durch hatte.

Jetzt habe ich dadurch auch mal einen kleinen Einblick in die Web-Programmierung bekommen.

Ich werde es wohl wahrscheinlich nicht nochmal brauchen, aber Wissen kann nicht schaden.

Danke dir nochmal für deine Hilfe.

ciao Neuling


als Antwort auf: [#566652]