2016-09-09 5 views
0

Я пробовал несколько часов, чтобы получить маркированный список, работающий в InDesign, где каждый элемент находится в отдельной строке, не изменяя форматирование после импорта.Создание маркированного списка в InDesign с XML

Это пример структуры XML я должен работать с:

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

настроить стиль абзаца для пуль, и я использую его на <item> тегов, но после импорта они появляются инлайн :

enter image description here

Как получить каждый элемент появится на новой строке без ручного ввода возвращается после импорта? Это будет частью гораздо более крупного документа с тысячами строк XML, и я хочу автоматизировать процесс.

ответ

1

В XML игнорируются новые строки между узлами. Большая часть экспорта XML из баз данных не имеет новых линий между узлами.

InDesign заботится о новых строках, поэтому все три элемента элемента отображаются как один абзац, когда вы помещаете свой XML в текстовый фрейм.

маркированные списки являются параметры стиля абзаца, вам нужно вставить символы новой строки перед каждым узлом элемента в список вашего узла

Вы можете настроить свой XML или добавить CR в XSLT. Я обычно добавляю

&#13; 

в XSLT после моего элемента списка пули.

+0

Я закончил с использованием XSLT. Моя ситуация была немного сложнее, поэтому я создал шаблон, который фильтрует списки, и добавляет '& # xa' в текстовый элемент. – SchattenJager

+1

Интересно, если вы посмотрите на первое редактирование моего сообщения, я изначально предложил то же самое, но с CR вместо LF. Оба подхода работают в Indesign. –

1

Это было мое решение XSLT:

<?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> 

 Смежные вопросы

  • Нет связанных вопросов^_^