2016-09-09 7 views
0

Ich habe stundenlang versucht, eine Aufzählungsliste in InDesign zu erstellen, in der sich jedes Element in einer eigenen Zeile befindet, ohne die Formatierung nach dem Import anzupassen. Erstellen einer Aufzählungsliste in InDesign mit XML

Dies ist ein Beispiel für die XML-Struktur Ich habe mit arbeiten:

<?xml version="1.0" encoding="UTF-8"?> 
<Root> 
    <list> 
     <item>1</item> 
     <item>2</item> 
     <item>3</item> 
    </list> 
</Root> 

I gründen eine Absatzvorlage für Aufzählungszeichen und bin mit ihm auf den <item> Tags, aber nach dem Import sie erscheinen Inline :

enter image description here

Wie erhalte ich jedes Element auf einer neuen Zeile erscheinen, ohne manuell kehrt in nach dem Import zu setzen? Dies wird Teil eines viel größeren Dokuments mit Tausenden von XML-Zeilen sein, und ich möchte den Prozess automatisieren.

Antwort

1

In XML werden neue Zeilen zwischen Knoten ignoriert. Die meisten XML-Exporte aus den Datenbanken haben keine neuen Zeilen zwischen Knoten.

InDesign kümmert sich um die neuen Zeilen, daher werden alle drei Elementknoten als einzelner Absatz gerendert, wenn Sie Ihr XML in den Textrahmen einfügen.

Aufzählungen Settings eines Absatzes Stil sind, müssen Sie vor jedem Element Knoten in der Liste Knoten in XSLT

Sie können zwicken Ihre XML oder fügen Sie CR neue Zeile Zeichen einzufügen. Ich füge normalerweise

&#13; 

in XSLT nach meiner Aufzählungsliste hinzu.

+0

ich XSLT mit endete. Meine Situation war ein wenig komplizierter, also habe ich eine Vorlage erstellt, die Listen filtert und '& # xa' in einem Textelement hinzufügt. – SchattenJager

+1

Interessanterweise schlug ich beim ersten Editieren meines Posts zunächst dasselbe vor, aber mit CR statt LF. Beide Ansätze arbeiten in Indesign. –

1

Dies war meine XSLT Lösung:

<?xml version="1.0" encoding="iso-8859-1" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:template match="item[position() != 1 and not(descendant::value[not(*)][normalize-space()])]"> 
     <xsl:copy ><xsl:text>&#xa;</xsl:text><xsl:apply-templates /></xsl:copy> 
    </xsl:template> 
    <xsl:template match="@*|node()"> 
     <xsl:copy select="."> 
      <xsl:copy-of select="@*" /> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 
Verwandte Themen