2014-08-30 12 views
5

Ich benötige eine semantische Abfrage-Ergebnistabelle Vorlage, in der ich sowohl durch Zeilenbegrenzung getrennte Zellenergebnisse für einige Spalten als auch durch Kommas getrennte Spalten in derselben Tabelle haben kann.Formatieren einer Semantic MediaWiki-Abfrage-Ergebnistabelle mit Zellen-Zeilenumbrüchen

Wenn ich den Standard Format verwenden = broadtable, zum Beispiel, wird das Ergebnis durch Zeilenumbrüche innerhalb der Tabellenzellen für alle Spalten getrennt:

{{#ask:[[Category:Items]] 
|?Description 
|?Models 
|?Addons 
|format=broadtable 
}} 

Wenn ich eine Vorlage zu erstellen, alles, was ich bin in der Lage zu zu erreichen, ist eine durch Kommata getrennte Ergebnis:

<includeonly> 
{| class="wikitable sortable" 
! style="width: 30%;" | Page 
!! style="width: 30%;" | Description 
!! style="width: 20%;" | Models 
!! style="width: 20%;" | Addons 
|- 
</includeonly> 

{{#ask:[[Category:Items]] 
|?Description 
|?Models 
|?Addons 
|format=template 
|template=QResTemplate 
}} 

<includeonly> 
|} 
</includeonly> 

Hier wird die QResTemplate:

<includeonly> 
| {{{1}}} || {{{2}}} || {{{3}}} || {{{4}}} 
|- 
</includeonly> 

Jedes Element hat mehrere Modelle und Addons. In Spalte 3 und 4 in der Tabelle muss eines davon durch Kommas getrennt sein, während das andere durch Zeilentrenner getrennt ist.

Wenn ich etwas nach {{{3}}} wie ein Zeilenumbruch hinzufüge, wird es nach dem letzten Modell in der Tabellenzeile eingefügt, nicht nach jedem Modell, wie ich es möchte.

Antwort

2

Verwenden Extension:Arrays Ihr Komma getrennte Ausgänge zu formatieren, wie Sie wollen:

<includeonly><!-- 

     store arrays 

-->{{#arraydefine:models|{{{3}}}}}<!-- 
-->{{#arraydefine:addons|{{{4}}}}}<!-- 

     print row 

--> 
| {{{1}}} || {{{2}}} || {{#arrayprint:models|<br/>}} || {{#arrayprint:addons|, }} 
|- 
</includeonly> 

Zuerst Sie speichern beiden Listen als Arrays. arraydefine geht davon aus, dass Ihre Liste durch Kommas getrennt ist, sofern Sie nicht etwas anderes angeben. Dann drucken Sie Ihre Arrays erneut mit #arrayprint, aber dieses Mal können Sie entscheiden, wie diese Werte getrennt werden sollen.

Wenn Sie keine Kommas verwenden können (zum Beispiel, weil einige Wert ein Komma enthält, können Sie beispielsweise sep=¤ auf Ihre fragen Abfrage, fügen und tun dann {{#arraydefine:models|{{{3}}}|¤}} arraydefine zu sagen, dass Sie ein anderes Trennzeichen verwenden.