导入 XML

有关的详细信息和说明,请单击以下链接。

XML 导入和排版方法

在导入 XML 数据后,导入的内容在“结构”窗格中显示为元素(XML 的基本构建单元)。导入 XML 时,InDesign 不会创建新框架或新页面。

追加还是合并?

可以采用以下两种模式之一导入 XML:追加或合并。选择何种方法取决于您的工作流程(手动还是自动)、您希望以何种方式来处理文档中的现有内容以及是否希望使用高级选项来处理导入的数据。

追加模式

追加导入的内容时,文档的现有结构和内容仍会保留不变;新的 XML 内容则以元素的形式置于“结构”窗格底部。

合并模式

合并导入的内容时,InDesign 将传入的 XML 与文档中已有元素的结构和名称进行对比。如果元素匹配,导入的数据将替换现有文档内容,并且将合并到版面中带有正确标签的框架(或占位符)中。(如果 InDesign 不能为元素找到匹配的名称和层次结构级别,则这些元素将置于“结构”窗格中,以便您能够手动置入它们。) 合并模式不仅让自动化排版成为可能,而且提供了更为高级的导入选项,包括筛选传入的文本和为重复数据仿制元素的能力。

内容排版

在导入 XML 内容后,下一步就是将其置入文档中。可以手动或自动置入内容,也可以使用脚本置入内容。所选择的方法取决于要导入的内容、文档的排版以及您的工作流程。

手动置入内容

采用手动方法时,可将元素从“结构”窗格拖到文档页面上或拖到框架中。此方法需要进行一些布置或规划。如果所导入内容的类型不同或需要从多个来源获取内容,请使用此方法。

手动置入导入的 XML 内容

自动置入内容

通过事先进行规划,可以自动完成在版面中置入 XML 数据的过程。若要自动置入 XML 内容,首先得准备文档,创建带标签的占位符框,以存放传入的 XML。只要传入内容的 XML 结构和标签名称与占位符框的标签名称和结构相匹配,InDesign 就能将导入的 XML 自动置入文档中。InDesign 还可以通过仿制元素来处理重复数据,例如地址列表和目录材料。在结构化工作流程中使用自动化的排版方法可缩短生产时间并提高效率。

选定的占位符框(上)使用 Story 元素进行了标记。当导入 XML 数据时(底部),会自动使用 Story 元素的内容填充 Story 元素占位符框。

注意:

InDesign 可识别能够在 XML 中指定段落或字符样式的特殊名称空间属性。有关详细信息,请参阅 XML 技术参考指南

关于合并

可以采用合并模式或追加模式在文档中置入 XML 数据。可通过合并模式自动完成内容的置入过程。此外,还可以筛选 XML 文件中的数据,仅置入内容的某些特定部分。

在以下情况中,应合并传入的 XML 内容:

  • 文档包含占位符框,并且您希望用导入的 XML 内容填充这些占位符框。

  • 文档包含 XML 内容,并且您希望将其替换为导入的 XML 内容。

  • 文档不包含任何 XML 结构,但您希望 InDesign 用传入 XML 文件的根元素替换默认根元素。

合并模式将传入的 XML 数据与文档中已有的元素进行比较。它逐个元素地遍历整个文件,以如下方式比较传入元素和现有元素:

1. InDesign 首先比较根元素

  • 如果所导入 XML 文件和 InDesign 文档的根元素不匹配,且“结构”窗格不包含任何现有结构,InDesign 将使用传入 XML 文件的根元素来替代 InDesign 文档的根元素,并导入此 XML 文件。

  • 如果根元素不匹配但“结构”窗格已经包含元素,InDesign 会将文件追加到现有结构的末尾。

  • 如果根元素匹配,合并(和匹配)过程将继续向前进行。

2. InDesign 移动到根元素下的元素

从位于传入 XML 文件中根元素紧下方的元素开始,InDesign 会在“结构”窗格中搜索匹配元素。只有当传入的 XML 元素与“结构”窗格中的现有元素具有相同名称,且两个元素处于层次结构中的同一级别时,才可视二者为匹配。

  • 如果 InDesign 在“结构”窗格中找到了匹配元素,它会用传入 XML 文件中的元素替换“结构”窗格中的该元素。

  • 如果 InDesign 未找到匹配项,则会在“结构”窗格中的搜索起点处插入传入的元素。例如,如果搜索从根元素紧下方开始,并且没有找到匹配项,则传入的元素将被置于根元素的紧下方。

3. InDesign 继续比较元素

InDesign 将继续逐个元素地对传入 XML 和现有结构进行比较。“结构”面板中的搜索起点将随着搜索过程发生更改,每次搜索都从上一次插入或替换的元素的紧下方开始。InDesign 总是从当前位置向下移动;从不在它插入或替换的前一个元素上方置入元素。

导入并追加 XML 数据

当导入 XML 内容时,新元素将显示在“结构”窗格中。可以从此处拖动元素以将它们置入文档中。

  1. 打开一个 InDesign 文档,或创建一个新文档,以接收 XML 内容。
  2. 打开“结构”窗格。(选择“视图”>“结构”>“显示结构”。)
  3. 选择“文件”>“导入 XML”(或者选择“结构”窗格菜单上的“导入 XML”),然后选择要导入的 XML 文件。
  4. 选择“显示 XML 导入选项”。
  5. 选择“追加内容”,然后单击“打开”。
  6. 要将 XML 内容链接到原 XML 文件,请选择“创建链接”。

    InDesign 会在“链接”面板中列出该 XML 文件,如果该 XML 文件发生更改,则会在面板中显示一个黄色警告三角形。

  7. 单击“确定”。

手动排版 XML

您可以手动将 XML 内容置入文档版面中,方法是:将元素从“结构”窗格拖动到页面或现有框架中。在置入元素时,其子元素以及子元素下的所有子元素(如果有)也将被置入。

在“结构”窗格中,如果元素已经置入文档中,元素图标上将显示结构特有的蓝色菱形;如果元素尚未置入,则显示未置入图标。

注意:

如果 XML 是使用“合并内容”选项导入的,某些元素可能已经被排版。在合并导入的内容时,如果元素具有完全相同的结构和标签,InDesign 会自动将元素排列到现有框架中。

  1. 打开“结构”窗格(“视图”>“结构”>“显示结构”),然后选择要排版的元素。
  2. 为要置入文档的所有元素执行下列操作之一:
    • 将元素拖动到页面上。InDesign 将为该元素创建一个框架。

    • 将元素拖动到现有框架上。如果该框架包含内容,则其内容将被来自 XML 数据的内容替换。

  3. 若要设置所排版项目的格式,执行以下操作之一:
    • 将 XML 标签映射到段落、字符、表和单元格样式。

    • 对元素应用样式。

    • 在“控制”面板中选择文本选项,手动设置所选内容的格式。

将 XML 标签映射到样式

XML 标签仅仅是一些数据描述;它们不包含任何格式设置指令。因此,在导入 XML 内容并对其进行排版后,必须设置其格式。为此,可以采用的一种方法是将 XML 标签映射到段落、字符、表或单元格样式。例如,Byline 标签可以映射到 Author 字符样式,以便所有导入和置入的带有 Byline 标签的 XML 内容都会自动指定为 Author 字符样式。将标签映射到样式不仅可以简化所导入 XML 内容的格式设置工作,而且可以节约时间。

您无需将每一个标签都映射到一个段落或字符样式。某些元素可能不在版面中显示,而其他元素一次设置一种格式可能更容易些。此外,子元素会取得为其父元素指定的段落或字符样式,这将导致格式混乱,除非您小心地分别映射父元素和子元素。

注意:

“将标签映射到样式”命令会在整个文档范围内重新应用样式,有时这会产生不想要的结果。如果将某个标签映射到某个样式,那么先前指定为某种样式的文本现在可能被重新指定为其他样式,具体情况取决于它的 XML 标签。如果您已经设置了某些文本的格式,可能希望手动应用样式以防止先前选择的段落和字符样式被覆盖。

  1. 从“标签”面板菜单或“结构”窗格菜单中选择“将标签映射到样式”。
    在“将标签映射到样式”对话框中,针对每个标签将出现一个样式菜单

  2. 执行以下任意操作:
    • 若要从其他文档导入样式、标签和映射定义,请单击“载入”,选择一个文档,然后单击“打开”。

    • 若要逐个地将标签映射到样式,请单击标签旁的“样式”栏,然后从出现的菜单中选择段落或字符样式。(在菜单中,段落符号表示段落的样式;“A”表示字符样式。) 针对每一个要映射的标签重复以上操作。

    • 若要将标签自动映射到同名样式,请单击“按名称映射”。在“样式”栏中就会选择与标签同名的样式。只有当标签和样式具有相同名称,并且大小写也相同时才可视二者为匹配;例如,H1h1 不会被认为是一个匹配。(如果两个不同的样式组中存在同名样式,“按名称映射”将不执行映射,并提醒您应重命名其中一个样式。)

  3. 单击“确定”。

关于自动排版

使用 InDesign 时,可以将导入的 XML 内容自动置入版面中。为此,应首先创建占位符框或表,然后用与要在其中置入的 XML 元素相同的标签名称为其添加标签。然后,以“合并”模式将 XML 内容导入到占位符中。如果标签的名称和结构层次均匹配,InDesign 将合并 XML 内容,并替换文档中的所有现有内容。

如果您希望将相同版面用于不同的内容集,此方法十分有用。例如,新闻通讯周刊可能每周都使用同样的版面,但是每一期的内容却各不相同。

若要将导入的 XML 直接合并到版面中,文档必须满足以下这些要求:

  • 标记文档中的框架(或表)时,所用标签必须与待导入 XML 文件中的元素同名。

  • 文档的结构(如“结构”窗格中所示)必须与所导入 XML 文件的结构相同。换句话说,必须能够在两个文件结构层次中的相同位置上找到名称完全相同的元素。为获得这种相同结构,可能必须在“结构”窗格中重新排列或重新排序元素(及其子元素),或者在导入 XML 文件时使用“应用 XSLT”选项。

注意:

InDesign 仅将合并后的 XML 内容排列到现有框架中。无法容纳在其框架(或一系列串接框架)中的所有元素内容都会成为溢流文本。

使用重复数据

如果具有相同配置的元素在一行中出现多次,但是每一个实例中均包含不同的数据,则将 XML 称作是重复的。例如,数据库记录便是重复的。数据库表中的地址包含针对不同个人的重复信息 -- 姓名、街道地址、城市、州/省、邮编。

导入 XML 内容的时候,可以在“XML 导入选项”对话框中选择“仿制重复文本元素”。选择此选项可指示 InDesign 仿制结构中的重复元素。通过仿制,可以将重复的 XML 数据合并到文档中,而无需为每个记录在“结构”窗格中创建占位符元素(或在框架中创建占位符文本)。例如,为了导入包含 25 个条目的 XML 地址列表,可以在“结构”窗格中只为一个条目创建匹配的元素结构。在导入整个列表时,InDesign 会仿制该结构,为所有 25 个条目创建元素。

在合并到文档中时,重复的 XML 内容作为单篇文章进行排列。如果占位符框已经串接在一起,那么内容可以从一个框架排列到下一个框架。如果占位符框中没有足够的空间来容纳 XML 内容,可以通过创建并串接更多框架来自动排列其余内容;您不必将元素从“结构”窗格以手动方式拖动到各个框架中。

版面中的串接占位符(左)和导入后的版面(右)

创建用于自动排版的占位符

如果希望 InDesign 自动将导入的 XML 合并到版面中,请在文档中创建占位符框或表。

注意:

InDesign 仅将合并后的 XML 内容排列到现有框架中。框架中无法容纳的任何内容都将成为溢流文本。

还可以创建占位符文本来确保 XML 数据正确置入页面并正确设置格式。也可以使用占位符文本,在将要显示在框架中的 XML 元素之间加入制表符、空格或标签(称作静态文本)。

添加标签的占位符文本(左)和导入后的版面(右)

A. 元素之间添加的回车符和静态文本 B. 占位符文本 

例如,如果您正在导入和置入产品信息,可以在这些元素的占位符文本条目之前,使用制表符将产品的名称、描述和价格分隔开,并且包括诸如“产品:”或“价格:”这样的标签。在将 XML 数据合并到框架中时,内容元素之间的静态标签、空白和制表符会保留。

注意:

如果将重复 XML 数据合并到文档中,并指示 InDesign 仿制重复元素,则也会为数据的每个实例仿制静态文本和空白。

创建占位符框

  1. 使用“文字”工具,为 XML 内容创建文本框架。
    注意:

    如果想要将导入的 XML 内容从一个框架排列到另一个框架,可创建多个框架并将它们串接在一起。

  2. 打开“结构”窗格(“视图”>“结构”>“显示结构”)和“标签”面板(“窗口”>“实用程序”>“标签”)。
  3. 如果“标签”面板不包含名称与欲导入 XML 元素的名称完全相同的标签,则需要创建标签或从 XML 文件载入标签。
  4. 使用“标签”面板中的相应标签为占位符框添加标签。(如果为某个框架添加了标签,则会为串接到该框架的所有框架指定相同的标签。)
  5. 如果需要,请在“结构”窗格中排列或添加元素,以匹配要导入的 XML 的元素和结构。

创建占位符表

可以将 XML 元素导入到占位符表和占位符框中。在表中,每个单元格都由一个元素代表。InDesign 从表的左上角开始,逐个单元格、逐个元素地将 XML 内容置入表中,将元素匹配到带有标签的单元格。创建占位符表时,必须为表及表中的每个单元格都添加标签。(合并的单元格会被视为一个单元格。)

由于 InDesign 在导入时不区分行和列,因此占位符中的列数必须与所导入内容中的列数相匹配。此外,所有表单元格元素都必须包含在单个表元素中。换句话说,这些单元格是隶属于同一父元素的所有兄弟元素。

占位符表(上)和将 XML 内容排列到占位符表中(下)

  1. 打开“标签”面板(“窗口”>“实用程序”>“标签”)和“结构”窗格(“视图”>“结构”>“显示结构”)。
  2. 如果“标签”面板不包含与要导入的 XML 表元素的名称完全相同的标签名称,那么既可以从现有文档中载入标签,也可以创建标签。
    注意:

    至少必须具备以下元素的标签:表单元格的父元素、表单元格以及在其中驻留表的元素。

  3. 为 XML 内容创建一个包含适当列数的表。不必创建精确的行数,InDesign 会根据需要向表中添加行。
  4. 在插入点位于表中时,选择“表”>“选择”>“表”,然后选择“标签”面板中的相应标签。
  5. 对表的每个单元格添加所需标签。根据 XML 内容的结构,既可以逐个选择单元格并对单元格添加标签,也可以选择整行或整列(例如,如果想对第一行或者说标题行添加标签),然后对所有选定单元格添加相同的标签。
  6. 根据需要,在“结构”窗格中重新排列并添加元素,以便您的文档与将导入的 XML 文件具有相同的元素和结构。

创建重复数据的占位符结构

用于合并 XML 的相同规则在合并重复 XML 时也适用:“结构”窗格中元素的结构必须与所导入 XML 数据的结构相同,并且所有占位符框架的标签名称必须与 XML 文件中的父元素相同。

显示占位符文本结构的“结构”窗格

A. 将包含所有重复元素的元素 B. 将在导入重复的 XML 内容时被仿制的元素 C. 重复元素所包含数据的子元素 

  1. 首先,您需要一个描述待导入信息集合(或记录)的父元素或根元素。

    例如,将包含一系列配方的 Chapter 元素。

  2. 在父元素之下,创建一个用于描述要重复的信息(或记录)的元素。

    例如,可以在 Chapter 元素下创建一个 Recipe 元素。将为所导入 XML 中的每条记录仿制此元素。

  3. 在该元素之下,创建一些用于描述组成记录的信息单元(或字段)的子元素。

    例如,可以在 Recipe 元素之下创建 RecipenameIngredientsInstructionsNotesServing 元素。

注意:

若要包括重复 XML 数据中各个“字段”间的标签、回车符或制表符,请在所导入内容将要合并到的框架中创建占位符元素。然后,根据需要在占位符之间添加空白或标签。

创建占位符文本

  1. 打开一个现有文档,或为 XML 创建一个新文档。
  2. 打开“标签”面板(“窗口”>“实用程序”>“标签”)和“结构”窗格(“视图”>“结构”>“显示结构”)。
  3. 确保“标签”面板包含的标签名称与要导入的 XML 文件中的元素名称完全一致,然后根据需要创建新标签或载入必需的标签。
    注意:

    导入 XML 内容的样本,这是获取所有必需标签及确保文档结构与 XML 文件匹配的最简便方法。

  4. 根据需要为 XML 内容创建占位符框(并将它们串接在一起)。
  5. 使用“文本”工具,在第一个框架中单击以创建一个插入点,然后键入要合并到该框架中的每个元素的占位符文本。包括要在元素之间添加的任何空白及静态文本。
    注意:

    如果将要导入重复数据,则只需为要重复的元素创建示例文本的一个实例即可。

  6. 根据文本在最终文档中的预期外观设置其格式。
  7. 使用父元素的标签为文本框架添加标签,该父元素将包含要导入到该文本框架的元素(或重复数据)。
  8. 将插入点置于占位符文本中,然后选择“编辑”>“在文章编辑器中编辑”。
  9. 选择“视图”>“结构”>“显示标签标志符”。
  10. 选择“编辑”>“全选”。
  11. 在“标签”面板中,选择“添加标签”,然后单击指定给该框架的标签。

    InDesign 会在占位符文本前后添加该标签,并将元素添加到“结构”窗格中。

  12. 选择表示第一个子元素的文本,然后在“标签”面板中单击其标签。重复此操作,直到所有子占位符文本都添加了标签。
    注意:

    在向占位符文本添加标签时,不要选择想要在元素间保留的空白或静态文本。仅对要用 XML 内容替换的文本添加标签。

  13. 在“结构”窗格中,检查您添加的标签创建的层次结构,确保其与待导入 XML 内容的结构相匹配。

导入和合并 XML

在创建占位符框、表和文本并向它们添加标签之后(并确保文档和传入的 XML 文件具有相同的标签和结构),便可以将 XML 内容导入到版面中了。

必须使用“合并内容”选项将 XML 导入占位符(或者替换文档中的现有内容)。在合并内容时,InDesign 会用导入的 XML 元素替换文档中具有相同标签和结构的元素。可以使用其他导入选项来排除与文档结构不匹配的导入内容(即筛选),删除与导入的 XML 不匹配或无法被其替换的文档项目,以及仿制重复的 XML 元素。

如果导入的 XML 文件包含有在文档中无法找到的元素,InDesign 会将这些元素置于“结构”窗格中,并且不会将它们排版到文档中。

若要将 XML 成功合并到占位符中,应始终记住以下规则:

  • 使用名称与将替换占位符(或者将排列到占位符之中)的 XML 元素名称相同的标签向占位符添加标签。

  • 在占位符文本中,确保所有空格、回车符、制表符或静态文本都位于占位符元素标签之外,但位于文章父元素之内。

  • 在导入 XML 时,选择“不导入仅有空白元素的内容”。(如果导入的 XML 元素仅包含空白,这将保留空白和静态文本。)

将 XML 合并到现有内容或占位符中

  1. 打开包含 XML 内容的占位符的 InDesign 文档。
  2. 打开“结构”窗格(“视图”>“结构”>“显示结构”)。
  3. 选择“文件”>“导入 XML”(或者在“结构”窗格菜单上选择“导入 XML”),然后选择要导入的 XML 文件。
  4. 选择“显示 XML 导入选项”。
  5. 选择“合并内容”,然后单击“打开”。
  6. 要将 XML 内容链接到原 XML 文件,请选择“创建链接”。

    InDesign 会在“链接”面板中列出该 XML 文件,如果该 XML 源文件发生更改,则会在面板中显示一个黄色警告三角形。

  7. 根据需要选择其他导入选项:

    仿制重复文本元素

    如果要导入重复 XML,可仿制单个占位符元素,为文件中的每条记录创建一个容器。

    仅导入与现有结构匹配的元素

    筛选传入的 XML,这样就不会导入“结构”窗格中不存在的元素。

    不导入仅有空白元素的内容

    在占位符框中保留元素间插入的任何空白或静态文本。

    删除与导入的 XML 不匹配的元素、框架和内容

    在导入 XML 之后,删除文档中与传入的数据不匹配(或无法被其替换)的所有元素或占位符。

  8. 单击“确定”。

InDesign 从 XML 文件中的第一个匹配元素开始,将内容合并到文档中。

XML 导入选项

使用“合并内容”选项导入和置入 XML 数据时,“XML 导入选项”对话框显示下列选项:

创建链接

链接到 XML 文件,以便在 XML 文件发生更新的情况下更新 InDesign 文档中的 XML 数据。

应用 XSLT

应用样式表,定义所导入 XML 的转换。选择“浏览” (Windows) 或“选择” (Mac OS),从文件系统中选择一个 XSLT 文件(.xsl 或 .xslt)。“使用 XML 中的样式表”是默认选项,将导致 InDesign 使用一条 XSLT 处理指令(如果 XML 文件中存在该指令)转换 XML 数据。

仿制重复文本元素

为重复内容复制带标签的占位符文本所应用的格式。创建一个格式实例(例如,一个地址),然后自动重复使用其版面创建其他实例。(请参阅使用重复数据。)

仅导入与现有结构匹配的元素

筛选导入的 XML 内容,只有在所导入 XML 文件中的元素与文档中的元素相匹配时才将其导入。

如果标签匹配则将文本元素导入到表中

如果标签与占位符表及其单元格所应用的标签匹配,则将元素导入到表中。例如,在生成价目表或存货清单时,可使用此选项将数据库记录置入表中。

不导入仅有空白元素的内容

如果匹配的 XML 内容仅包含空白(如回车符或制表符字符),则将所有的现有内容保留原样。如果在占位符框中的元素间包括了文本,并且希望保留该文本,则应使用此选项。例如,对由数据库生成的配方进行排版时,可能会添加一些标签(如“成分”和“说明”)。只要容纳每个“配方”的父元素仅包含空白,InDesign 就会将标签保留原样。

删除与导入的 XML 不匹配的元素、框架和内容

如果元素与导入的 XML 文件中的元素不匹配,则从“结构”窗格和文档版面中将其删除。使用此选项可筛选文档中的数据。例如,导入名称和地址时,某个元素的占位符文本中可能包含有公司名称。如果名称之一不包含公司元素,InDesign 就会删除包含该占位符文本的元素。

将 CALS 表导入为 InDesign 表

将 XML 文件中的所有 CALS 表导入为 InDesign 表。

更快、更轻松地获得帮助

新用户?