使用 XML 在 InDesign 中创建项目符号列表
Creating a bulleted list in InDesign with XML
我已经尝试了几个小时才能在 InDesign 中使用项目符号列表,其中每个项目都在自己的行中,而无需在导入后调整格式。
这是我必须使用的 XML 结构的示例:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<list>
<item>1</item>
<item>2</item>
<item>3</item>
</list>
</Root>
我为项目符号设置了段落样式,并在 <item>
标签上使用它,但在导入后它们显示为内联:
如何在导入后不手动输入 returns 的情况下让每个项目出现在新行中?这将成为包含数千行 XML 的更大文档的一部分,我想自动化该过程。
在 XML 中,节点之间的新行将被忽略。来自数据库的大多数 XML 导出在节点之间没有新行。
InDesign 确实关心新行,因此当您将 XML 放入文本框架时,所有三个项目节点都呈现为单个段落。
项目符号列表是段落样式的设置,您需要在列表节点中的每个项目节点之前插入换行符
您可以调整 XML 或将 CR 添加到 XSLT。我通常添加
在我的项目符号列表项之后的 XSLT 中。
这是我的 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>
</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>
我已经尝试了几个小时才能在 InDesign 中使用项目符号列表,其中每个项目都在自己的行中,而无需在导入后调整格式。
这是我必须使用的 XML 结构的示例:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<list>
<item>1</item>
<item>2</item>
<item>3</item>
</list>
</Root>
我为项目符号设置了段落样式,并在 <item>
标签上使用它,但在导入后它们显示为内联:
如何在导入后不手动输入 returns 的情况下让每个项目出现在新行中?这将成为包含数千行 XML 的更大文档的一部分,我想自动化该过程。
在 XML 中,节点之间的新行将被忽略。来自数据库的大多数 XML 导出在节点之间没有新行。
InDesign 确实关心新行,因此当您将 XML 放入文本框架时,所有三个项目节点都呈现为单个段落。
项目符号列表是段落样式的设置,您需要在列表节点中的每个项目节点之前插入换行符
您可以调整 XML 或将 CR 添加到 XSLT。我通常添加
在我的项目符号列表项之后的 XSLT 中。
这是我的 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>
</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>