xml - IDML 中故事 XML 的逻辑顺序

标签 xml xml-serialization xml-parsing xmldocument idml

我是 IDML 的新手,我想了解这一点。

我发现 IDML 是包含多个 XML 文件的 zip 文件。 我打开了 designmap.xml 并在 Document 元素中看到了 StoryLine 属性。 但是,StoryLine 属性中的此顺序不一定与实际内容上显示的文本的逻辑顺序一致。

例如,IDML SDK 中的 BusinessCardTemplate 具有以下逻辑顺序:

John Doe
Software Developer
InDesign
Adobe Systems Incorporated
801 North 34th Street
Seattle, WA 98103
Phone: 206.675.7000
jdoe@adobe.com
www.adobe.com

然而,根据 StoryList 属性,以下是它引用的顺序:

Software Developer
InDesign
John Doe
jdoe@adobe.com
www.adobe.com
Phone: 206.675.7000
801 North 34th Street
Seattle, WA 98103
Adobe Systems Incorporated

有没有办法从IDML的内容中找出那些故事的逻辑顺序(最好是从左上到左下)?

提前致谢

最佳答案

故事只是文本内容,从它在文档中的使用中抽象出来。如果您想按正确的顺序获取故事,您需要:

1) 在解压的 IDML 文件的根目录中找到 designmap.xml(首先解压整个文件 - 我想你已经知道了)

2)通过查找spread元素从中获取Spreads的顺序:

<idPkg:Spread src="Spreads/Spread_uc6.xml" />

3) 在每个展开的文档中,获取 TextFrames 的顺序:

<TextFrame Self="uec" ParentStory="uda" PreviousTextFrame="n" NextTextFrame="n" ContentType="TextType" ... (many more parameters) ... />

4) 检查每个文本框的ParentStory引用:

<TextFrame Self="uec" ParentStory="uda" ... />

5) 查找相关故事:在本例中为Stories/Story_uda.xml。

在一个简单的文档中,每个 TextFrame 都与一个故事相匹配,这将为您提供故事在文档中出现的顺序。

但是,在某些情况下 - 例如链接到单个故事的多个框架,或线程框架,其中一个故事拆分为多个 TextFrames - 这种映射不会那么简单。还要注意 MasterSpreads 引入的复杂性。

您会发现 Adob​​e IDML 文档很有用:http://www.adobe.com/devnet/indesign/documentation.html#idml

关于xml - IDML 中故事 XML 的逻辑顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346961/

相关文章:

c# - 使用 Web 服务接受数据 C# .NET 3.5

java - 如何将数据从 xml 填充到 java bean 类

css - XSLT 样式表检测表格元素但不显示它们

Python os.rename() 用于父目录中多个子文件夹中的文件

vb.net - 为什么 XmlSerializer 不适用于共享类变量?

c# - 如何使用 XmlSerializer 序列化内部类?

c# - 上下文 XmlSerialization

javascript - 使用 Javascript 返回编辑后的 ​​XML 字符串

javascript - 使用 jQuery 解析 XML 文档,有没有一种有效的方法

java - 从 xml 填充 hashmap(java)