Search the FirstSpirit Knowledge Base
Hallo,
ich versuche momentan gerade meine Tabelle welche ich mittels CMS_INPUT_DOMTABLE erstellt habe auszugeben.
Die Ausgabe im XHTML mittels $CMS_VALUE(#content)$ funktioniert einwandfrei, jedoch wenn ich das gleiche im XML-Reiter machen will gibt er mir leider nichts aus und einen Fehler bekomme ich auch nicht zurück.
Hatte jemand auch schon mal das selbe Problem oder weiß vll. woran es liegen könnte?
Hallo,
für die Ausgabe werden folgende Formatvorlagen verwendet:
Für die Darstellung einer Tabelle über die Standardformatvorlagen werden die Formatvorlagen "Table" (Kürzel: "table"; Tabellenkörper), "Table-Row" (Kürzel: "tr"; eine Tabellenzeile) und "Table-Cell" (Kürzel: "td", eine Tabellenzelle) verwendet.
Siehe auch Dokumentation der Eingabekomponente.
Wahrscheinlich sind die Formatvorlagen für ihren XML-Ausgabekanal noch nicht gefüllt worden. Falls doch, posten sie doch bitte die Definition der Eingabekomponente (GOM) sowie das Vorlagenfragment, mit der sie die Tabelle ausgeben.
Hallo,
die Formatvorlagen table, tr und td hätte ich im XML-Kanal befüllt.
Eingabekomponente:
<CMS_INPUT_DOMTABLE
name="st_tabelle"
bold="yes"
columnChange="yes"
combine="yes"
hFill="yes"
height="10"
import="no"
italic="yes"
list="yes"
listConfig="symbole:Listsymbole[yes:Ja|no:Nein]"
listDefaultConfig="symbole=yes"
propertyConfig="vertical:Vertikale Ausrichtung[top:Oben|middle:Mitte|bottom:Unten],Textumbruch[Ja|Nein], Hintergrund[Hellgrau|Dunkelgrau],columnwidth:Spaltenbreite (%)[type=text;maxlen=3;allowed=1234567890]"
rowChange="yes">
<FORMATS>
<TEMPLATE name="p"/>
<TEMPLATE name="p_1"/>
<TEMPLATE name="pLine"/>
<TEMPLATE name="Ueberschrift1"/>
<TEMPLATE name="Ueberschrift2"/>
<TEMPLATE name="Ueberschrift3"/>
<TEMPLATE name="Hilfe"/>
<TEMPLATE name="Rechtliches"/>
<TEMPLATE name="Fussnote"/>
</FORMATS>
<LANGINFOS>
<LANGINFO lang="*" label="Tabellenförmiger Inhalt" description="Bitte füllen Sie die Tabelle aus"/>
</LANGINFOS>
</CMS_INPUT_DOMTABLE>
Ausgabe für XML:
<CMS_HEADER>
<CMS_FUNCTION name="Table" resultname="fr_table">
<CMS_PARAM name="tableData" value="st_tabelle"/>
<CMS_NODE_PARAM name="tableFormat">
<HEADERSPEC><![CDATA[<table>$CMS_VALUE(#content.convert2)$</table>]]>
</HEADERSPEC>
<ROW number="ALL">
<![CDATA[<tr>$CMS_VALUE(#content.convert2)$</tr>]]>
</ROW>
<ROW number="0">
<![CDATA[<thead><tr>$CMS_VALUE(#content.convert2,default:"")$</tr></thead>
$CMS_IF(st_tabelle.rows>1)$<tbody>$CMS_END_IF$
]]>
</ROW>
<ROW number="LAST">
<![CDATA[<tr>$CMS_VALUE(#content.convert2)$</tr></tbody>]]>
</ROW>
<CELL col="ALL" row="ALL">
<![CDATA[<td>$CMS_VALUE(#content.convert2,default:"")$</td>]]>
</CELL>
<CELL col="ALL" filltype="empty" row="ALL">
<![CDATA[<td> </td>]]>
</CELL>
</CMS_NODE_PARAM>
</CMS_FUNCTION>
</CMS_HEADER>
$CMS_IF(!st_titel.isEmpty)$<h2>$CMS_VALUE(st_titel)$</h2>$CMS_END_IF$
$CMS_VALUE(fr_table)$
Grundsätzlich ist der XML-Code 1:1 der selbe wie für XHTML - ich hab im XML lediglich die ganzen Style-Infos entfernt, da diese nicht benötigt werden. Oder ich überseh einfach was Entscheidendes...
Die Formatvorlagen:
<TEMPLATE name="p"/>
<TEMPLATE name="p_1"/>
<TEMPLATE name="pLine"/>
<TEMPLATE name="Ueberschrift1"/>
<TEMPLATE name="Ueberschrift2"/>
<TEMPLATE name="Ueberschrift3"/>
<TEMPLATE name="Hilfe"/>
<TEMPLATE name="Rechtliches"/>
<TEMPLATE name="Fussnote"/>
sind im XML-Kanal auch eine entsprechende Ausgabe?
Ja, auch im XML-Kanal sind dafür Ausgaben definiert.
Wobei diese jedoch egal sein sollten, da das XML ja nicht formatiert sein soll?!
So auf den ersten Blick erkenne ich keinen Fehler. Die Formatvorlagen brauchen auf jeden Fall ein $CMS_VALUE(#content)$ im XML-Ausgabekanal, sonst würden die im DOM gespeicherten Eingaben gar nicht ausgegeben.
Könnten Sie mal direkt ein $CMS_VALUE(st_tabelle)$ anstatt des $CMS_VALUE(fr_table)$ probieren? Dann wird nicht die Table-Funktion benutzt, sondern die Formatvorlagen (table/tr/td). Gibt es dann eine Ausgabe?
Was sagt denn "Fehler der Vorschau"? Das "#content.convert2" kommt mir suspekt vor..
In den Formatvorlagen steht jeweils ein $CMS_VALUE(#content)$ drin.
Eine direkte Ausgabe via $CMS_VALUE(st_tabelle)$ habe ich selbst schon ausprobiert bevor ich hier gepostet habe, da ich dachte, dass es vll. an der Funktion liegen könnte, dass es keine Ausgabe gibt.
$CMS_VALUE(if(#content.isEmpty, "", #content.convert2))$ at 1, 5): Replacing null value with empty default! Undefined field 'convert2'!
Das convert2 habe ich in diesem Fall deswegen eingebaut, da er mit einigen " & " die sich in der Tabelle befinden ein Ausgabeproblem hat.
Geb ich nun das convert2 weg ( und testweise auch das " & " ) funktioniert die Ausgabe.
Hab das " & " jetzt zu einem & gemacht und so funktionierts dann auch ohne convert2.
Vll. könnte mir nur jemand noch kurz erklären, wieso durch das convert2 keine Ausgabe möglich war - Danke.
Die Methode convert2 steht nur für Strings zur Verfügung. Bei #content handelt es sich allerdings um ein Systemobjekt, siehe die Dokumentation zu Formatvorlagen. Um convert2 anwenden zu können, müssten sie also zuerst einen String erzeugen: $CMS_VALUE(#content.toString.convert2)$.
Schöner wäre es, wenn sie für ihren XML-Kanal direkt eine entsprechende Konvertierungsregel anlegen und verwenden würden, siehe Dokumentation zu Konvertierungsregeln. In der Konvertierungsregel würden Sie im "convert" Teil alle in XML ungültigen Zeichen konvertieren.