使用XML在InDesign中创建项目符号列表

时间:2016-09-09 14:16:41

标签: xml adobe-indesign

我已经尝试了几个小时来在InDesign中使用项目符号列表,其中每个项目都在自己的行上,而不会在导入后调整格式。

这是我必须使用的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的更大文档的一部分,我希望自动化该过程。

2 个答案:

答案 0 :(得分:1)

在XML中,忽略节点之间的新行。来自数据库的大多数XML导出在节点之间没有新行。

InDesign确实关心新行,因此当您将XML放入文本框架时,所有三个项目节点都会呈现为单个段落。

项目符号列表是段落样式的设置,您需要在列表节点中的每个项目节点之前插入换行符号

您可以调整XML或将CR添加到XSLT。我通常会添加

&#13;
在我的子弹列表项目之后的中的

答案 1 :(得分: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>