映射 XML 文档样本详细信息

示例概述

此示例告诉您如何使用 RDB 至 XML 映射编辑器来创建可通过 DB2 XML Extender 使用的 DAD 文件。DB2 XML Extender 提供了不同的选项来从现有的 DB2 数据组成 XML 文档,或将 XML 文档分解为 DB2 数据。XML 到 XML 映射编辑器可接受多种格式(DTD、XSD 或 XML)的输入。下表总结了每个示例采用什么样的输入和输出。

示例 描述
CD 

一个简单的示例。在此示例中,cdtitle.xml 中有关 CD 的信息被转换为 newcdtitle.dtd 文件中所描述的另一种 XML 格式。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):

地址 此示例告诉您如何将地址描述从一种格式转换为另一种格式。它提供了标记转换和如何定义 XPath 函数的示例。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
PO 在此示例中,从 Web 客户端中接收到的采购订单被转换为可由机构的后端系统处理的另一种格式。它告诉您如何调用 Java bean 或外部 JavaScript 来计算一些值,例如,为请求生成一个唯一的内部标识。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
书籍 此示例告诉您如何获取 Books.xml 中描述的书籍清单,以及如何生成样式表以便将该清单转换为 HTML,用于在 Web 浏览器中呈示。bookhtml.xml 描述了目标格式,该目标格式为一个 HTML 表。该示例也引入了排序的概念。XML 中描述的书籍的无序清单在 HTML 中按照类别和价格显示。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
机构组织图 该示例摘自 XSLT Programmer's Reference 一书,并使用了一个常见的 stylexml.transformet 模式,即所谓的“填空”样式表模式。orgchart.xml 文件表示一个公司的组织结构图。它是以递归的结构来组织的,该结构反应了管理层次结构。生成的样式表在一个 HTML 表中显示这些数据,该表显示职员的名字以及他或她的老板的名字。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
奥赛罗 该示例同样摘自 XSLT Programmer's Reference 一书,并使用了一个常见的样式表模式,即所谓的“基于规则”样式表模式。othello.xml 文件包含了来自莎士比亚的戏剧《奥赛罗》中的一个场景。生成的样式表以一个 HTML 表的形式呈示该戏剧。该表包含两列,第一列包含说话者的名字,第二列包含对白的内容。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
城市 这是三个分组示例中的第一个,它引入了分组的概念。该示例摘自 XSLT Programmer's Reference 一书。cities.xml 文件列示了所有城市及其相应国家或地区。可通过定义组或键来改变输出格式,以列示属于某一特定国家或地区的城市。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
学校 这是第二个分组示例。school.xml 文件列示学校中的学生以及每个学生学习的科目。可将它转换为另一种格式来列示学校开设的科目以及登记学习每个科目的学生。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
职员 这是第三个分组示例。employee.xml 文件包含一个职员清单,该清单是从典型的 SQL 查询创建的。employee.xml 文件是由 SQL 查询构建器生成的。该查询的结果是一个显示职员清单的平面结构。可将它转换为一个按部门分组这些职员的层次结构。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
旅行 该示例告诉您如何合并来自多个源的数据以生成一个结果文档。hotel.xml 包含旅馆预订信息,airline.xml 包含机票预订信息。合并了这两个文件的数据来产生一个行程表。在 itinerary.dtd 文件中描述了行程表格式。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):
方向导航 在此示例中,处理加拿大和美国地址的驾驶方向导航信息被从一种格式转换为另一种格式。该示例演示如何在映射会话中动态地选择或映射一个选项的不同成员。它还演示了如何在 XML 到 XML 映射中将 <xsl:choose> 指示添加到任何目标元素或属性。
DTD 作为输入/输出: | XSD 作为输入/输出: | HTML 模板(XML + DTD):

常见问题

指定 DTD 或 XSD 作为输入

问题:为什么在两个实例文档之间定义映射时需要 DTD 或 XSD 文件?我没有 DTD 或 XSD 文件。

回答:DTD 或 XSD 包含生成正确的 XSLT 时所需要的类型信息。仅有实例文档不足以确定某一元素是可重复的还是不可重复的。使用 DTD 或 XSD 后,转换所需要的该级别的信息就清楚了。

如果没有 DTD,可使用 DTD 文件编辑器从 XML 文档生成一个 DTD。有了该生成的 DTD 文件后,就可调用 XML 到 XML 映射编辑器了。如果愿意,也可从该 DTD 生成一个 XSD。

问题:可以指定 XML 文档吗?

回答:如果 XML 文档包含有 DOCTYPE 或 xsi:schemaLocation 标记来指示其相应的 DTD 或 XSD 的话,可指定 XML 文档作为输入。如果实例文档成功通过 XML 编辑器的验证,则可将它用作 XML 到 XML 映射编辑器的输入。

问题:使用 DTD 或 XSD 作为输入有什么不同?

回答:如果想在 XSLT 和输出文档中使用名称空间,则应该使用 XSD 作为输入。请参阅 XML 模式和 XML 编辑器中的文档以获取有关名称空间如何工作的详细描述。XSD 示例也提供了不同的名称空间使用模式。

HTML 模板

在将 XML 文档转换为 HTML 文档中通常会用到 XSLT。

问题:因为 XHTML 和 HTML 具有类属标记,所以 DTD 不能完整描述它们。仍能用 XML 到 XML 映射编辑器来生成 XSLT 吗?

回答:虽然 DTD 不能完整描述 XHTML 和 HTML,但 DTD 只是用来提供元数据的,因此它不必是完整的。只要 DTD 定义了想要映射的那部分文档,对于 XML 到 XML 映射编辑器就足够了。

书籍机构组织图奥赛罗示例告诉您如何为 HTML 片断定义 DTD 并在目标 HTML 文档中为输出 HTML 提供模板数据。


CD 样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 cdtitle.dtd 作为源输入,newcdtitle.dtd 作为目标文件。在“根元素”页面,选择 Collections 作为目标根元素,CDLib 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 CDLib 下面的 CD 元素(即 /CDLib/CD)。在“目标”视图中,选择 Library 下面的 CD 元素(即 /Collections/Library/CD)。注意两个 CD 元素都是可重复的。选择创建映射来在这两个元素之间创建映射。
  2. 在“源”视图中,选择 artist 元素。在“目标”视图中,选择 artist 属性。选择创建映射来在此属性和此元素之间创建映射。
  3. 在“源”视图中,选择 title 元素。在“目标”视图中,选择 title 元素。选择创建映射来在这两个元素之间创建映射。
  4. 在“源”视图中,选择 description 元素。在“目标”视图中,选择 description 元素。选择创建映射来在这两个元素之间创建映射。
  5. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:newcdtitle.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 cdtitle.xml。可对生成的 newcdtitle.xsl 运行此文件以生成一个结果 _cdtitle_transform.xml 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 newcdtitle.xsl 和 cdtitle.xml
  2. 右键单击这些文件并单击运行 > XSL 转换


地址样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 Contact.dtd 作为源输入,Member.dtd 作为目标文件。在“根元素”页面,选择 Member 作为目标根元素,Contact 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 PostalAddress 元素并将它映射到“目标”视图中的 Address 元素。注意两个元素都是可重复的。
  2. 在“源”视图中,选择 Name 元素并将它映射到“目标”视图中的 AddressType
  3. 在“源”视图中,选择 Street 元素并将它映射到“目标”视图中的 AddressLine
  4. 在“源”视图中,选择 City 元素并将它映射到“目标”视图中的 City
  5. 在“源”视图中,选择 State 元素并将它映射到“目标”视图中的 State
  6. 在“源”视图中,选择 PostalCode 元素并将它映射到“目标”视图中的 Zip
  7. 在“源”视图中,选择 Country 元素并将它映射到“目标”视图中的 Country
  8. 在“源”视图中,选择 Email 元素并将它映射到“目标”视图中的 Email
  9. 在“源”视图中,选择 DeliverTo 元素并将它映射到“目标”视图中的 LastName
  10. 再次选择 LastName 并调用定义 XSLT 函数向导。选择字符串。在“字符串函数”页面,选择函数 substring-after。注意,缺省情况下,已根据映射定义了一个 XPath 参数 /Contact/PostalAddress/DeliverTo/text()。这将用作 substring-after 函数的第一个自变量。添加第二个自变量:' '(单引号,后跟空格,然后跟单引号),它将用作第一个自变量的定界符。单击完成
  11. 在“源”视图中,选择 DeliverTo 元素并将它映射到“目标”视图中的 FirstName
  12. 再次选择 FirstName 并调用定义 XSLT 函数向导。选择字符串。在“字符串函数”页面,选择函数 substring-before。注意,缺省情况下,已根据映射定义了一个 XPath 参数 /Contact/PostalAddress/DeliverTo/text()。这将用作 substring-before 函数的第一个自变量。添加第二个自变量:' '(单引号,后跟空格,然后跟单引号),它将用作第一个自变量的定界符。单击完成
  13. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:Member.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 Contact.xml。可对生成的 Member.xsl 运行此文件以生成一个结果 _Contact_transform.xml 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 Member.xsl 和 Contact.xml
  2. 右键单击这些文件并单击运行 > XSL 转换


PO 样本

PO 样本告诉您如何调用 Java 或 JavaScript 编写的外部函数。虽然 JavaScript 可嵌入在 XSLT 样式表中,但仍然建议将它们保存在外部文件中,以便在从 XML 到 XML 映射工具中重新生成 XSLT 脚本时不会覆盖这些 JavaScript 脚本。

  1. Java bean
  2. 外部 JavaScript

Java bean

开始

注意,为了使定义 XSLT 函数向导能找到 Java bean order.PurchaseBean 并显示其全部可用方法,此 bean 必须首先是某个 Java 项目中的有效 Java 类。因此需要创建一个 Java 项目,并将 PurchaseBean.java 移到一个名为 order 的包中。

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 webOrder.dtd 作为源输入,Order.dtd 作为目标文件。在“根元素”页面,选择 Order 作为目标根元素,PurchaseOrder 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 Id 元素并将它映射到“目标”视图中的 Purchase-Order-Id
  2. 在“源”视图中,选择 Day 属性并将它映射到“目标”视图中的 Day 元素。
  3. 在“源”视图中,选择 Year 属性并将它映射到“目标”视图中的 Year 元素。
  4. 在“源”视图中,选择 Month 属性并将它映射到“目标”视图中的 Month 元素。
  5. 在“源”视图中,选择 Quantity 元素并将它映射到“目标”视图中的 Quantity 元素。
  6. 在“源”视图中,选择 Item-code 元素并将它映射到“目标”视图中的 Purchaser-Item-Code 元素。
  7. 在“目标”视图中,选择 id 属性。选择定义 XSLT 函数向导。选择定制 Java bean。在“Java 方法”页面,输入 order.PurchaseBean 作为 Java bean 的名称。输入 getOrderId 作为方法的名称。单击完成
  8. 在“目标”视图中,选择 Unit-Price 元素。选择定义 XSLT 函数向导。选择定制 Java bean。在“Java 方法”页面,输入 order.PurchaseBean 作为 Java bean 的名称。输入 getPrice 作为方法的名称。通过在给出的文本字段中进行输入或在提供的可能 XPath 和变量中进行选择,将 /PurchaseOrder/Item-code/text() 添加为此方法的参数。单击完成
  9. 在“输出”视图中,选择 Total 元素。选择定义 XSLT 函数向导。选择数值。在“数值函数”页面,选择 *(乘)函数。添加两个自变量。第一个自变量 $getPrice 是一个变量,它保存在步骤 8 中指定的 getPrice 方法调用的返回值。第二个自变量 /PurchaseOrder/Quantity/text() 是“源”视图中 Quantity 元素的值。两个自变量都可通过从提供的 XPath 和变量中进行选择来输入。单击完成
  10. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:

  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:Order.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 webOrder.xml 和 Java bean PurchaseBean.java。可对生成的 Order.xsl 运行它以生成一个结果 _webOrder_transform.xml 文件。确保编译了 PurchaseBean。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 Order.xsl。
  2. 右键单击此文件并单击运行 > XSL 转换
  3. 在“启动配置”向导中选择主要选项卡。
  4. 在“主要”面板中,使用浏览工具来指定 XML 源 webOrder.xml。
  5. 选择类路径选项卡。在“类路径”面板,在树查看器中选择用户条目
  6. 单击添加项目... 按钮。
  7. 项目选择向导中,选择包含 Java bean order.PurchaseBean 的 Java 项目。
  8. 在“项目选择”向导中单击确定
  9. 单击应用
  10. 单击运行

Java bean

开始

在 XML 到 XML 映射向导中,选择 webOrder.dtd 作为源输入,Order.dtd 作为目标文件。在“根元素”页面,选择 Order 作为目标根元素,PurchaseOrder 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 Id 元素并将它映射到“目标”视图中的 Purchase-Order-Id
  2. 在“源”视图中,选择 Day 属性并将它映射到“目标”视图中的 Day 元素。
  3. 在“源”视图中,选择 Year 属性并将它映射到“目标”视图中的 Year 元素。
  4. 在“源”视图中,选择 Month 属性并将它映射到“目标”视图中的 Month 元素。
  5. 在“源”视图中,选择 Quantity 元素并将它映射到“目标”视图中的 Quantity 元素。
  6. 在“源”视图中,选择 Item-code 元素并将它映射到“目标”视图中的 Purchaser-Item-Code 元素。
  7. 在“目标”视图中,选择 id 属性。选择定义 XSLT 函数向导。选择定制 JavaScript。在“JavaScript 函数”页面,输入 file:order/PurchaseOrder.js 作为标识 JavaScript 资源的 URI 引用。输入 getOrderId 作为函数的名称。单击完成
  8. 在“目标”视图中,选择 Unit-Price 元素。选择定义 XSLT 函数向导。选择定制 JavaScript。在“JavaScript 函数”页面,输入 file:order/PurchaseOrder.js 作为标识 JavaScript 资源的 URI 引用。输入 getPrice 作为函数的名称。通过在给出的文本字段中进行输入来将 string(/PurchaseOrder/Item-code/text()) 添加为此方法的参数。注意,与 XPath 或 Java 不同,JavaScript 函数的自变量不会自动转换为所要求的类型。单击完成
  9. 在“输出”视图中,选择 Total 元素。选择定义 XSLT 函数向导。选择数值。在“数值函数”页面,选择 *(乘)函数。添加两个自变量。第一个自变量 $getPrice 是一个变量,它保存在步骤 8 中指定的 getPrice 函数调用返回的值。第二个自变量 /PurchaseOrder/Quantity/text() 是“源”视图中 Quantity 元素的值。两个自变量都可通过从提供的 XPath 和变量中进行选择来输入。单击完成

单元测试

提供了样本源 webOrder.xml 和 JavaScript PurchaseOrder.js。可对生成的 OrderJS.xsl 运行它以生成一个结果 OrderJS.xml 文件。


书籍样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 Books.dtd 作为源输入,bookhtml.xml 作为目标文件。bookhtml.xml 提供了一个有关 html 输出外观的模板,另外也提供了一些静态数据。它包含了 html.dtd 以定义输出。在“根元素”页面,选择 Books 作为源文件的根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 Books 下面的 book 元素(即 /Books/book)。在“目标”视图中,选择 table 元素下面的 tr 元素(即 /html/body/table/tr)。注意 book 元素和 tr 元素都可重复。选择创建映射来在这两个元素之间创建映射。
  2. 再次选择 tr 元素并从其弹出菜单中选择排序... 以调用指定排序键向导。然后,通过从可用列表中选择 @category 并将它添加到空排序键列表中来指定主排序键。接着,通过选择 price/text() 并将它附加到此排序键列表中来指定辅助排序键。最后,在排序键列表中选择 price/text() 并在“排序选项”中将数据类型从词语更改为数值。单击完成
  3. 在“源”视图中,选择 firstlast 属性。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第一个 td 元素。选择创建映射来在这两个属性和这个元素之间创建多对一映射。
  4. 再次选择 td 元素并调用定义 XSLT 函数向导。选择字符串。在“字符串函数”页面,选择函数 concat。注意,缺省情况下,已根据映射定义了两个自变量 author/@firstauthor/@last。添加第三个自变量:' '(单引号,后跟空格,然后跟单引号)并排序这些自变量,以使 author/@first 作为第一个自变量出现,后跟 ' ',接着跟 author/@last单击完成
  5. 在“源”视图中,选择 title 元素。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第二个 td 元素。选择创建映射来在这两个元素之间创建映射。
  6. 在“源”视图中,选择 category 属性。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第三个 td 元素。选择创建映射来在这两个元素之间创建映射。
  7. 在“源”视图中,选择 price 属性。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第四个 td 元素。选择创建映射来在这两个元素之间创建映射。
  8. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:bookhtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 Books.xml。可对生成的 bookhtml.xsl 运行它以生成 _Books_transform.html 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 bookhtml.xsl 和 Books.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换


机构组织图样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 orgchart.dtd 作为源输入,orgcharthtml.xml 作为目标文件。orgcharthtml.xml 提供了一个有关 html 输出外观的模板,另外也提供了一些静态数据。它包含了 html.dtd 以定义输出。在“根元素”页面,选择 orgchart 作为源文件的根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 reports 下面的 person 元素(即 /orgchart/person/reports/person)。在“目标”视图中,选择 table 元素下面的 tr 元素(即 /html/body/table/tr)。注意 person 元素和 tr 元素都可重复。选择创建映射来在这两个元素之间创建映射。
  2. 再次选择 tr 元素并调用定义 XSLT 函数向导。选择 XPath 表达式。输入 XPath 表达式 //person 并按完成。XPath 表达式比实际映射所用的表达式更通用一些。此表达式也包括直接在 /orgchart 下面的那些 person 元素,以及 reports 下面的元素。
  3. 在“源”视图中,选择 /orgchart/person/reports/person/name 元素。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第一个 td 元素。选择创建映射来在这两个元素之间创建映射。
  4. 在“源”视图中,选择 /orgchart/person/reports/person/title 元素。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第二个 td 元素。选择创建映射来在这两个元素之间创建映射。
  5. 在“目标”视图中,选择 /html/body/table/tr/td 路径上的第三个 td 元素。调用定义 XSLT 函数向导并选择 XPath 表达式。输入 XPath 表达式 ancestor::person[1]/name 并按完成
  6. 在“目标”视图中,选择 body 下面的 P 元素。调用定义 XSLT 函数向导并选择字符串。在“字符串函数”页面上,选择函数 concat。添加下列三个参数:'The following responsibilities were announced on '/orgchart/@date'.'. 单击完成
  7. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:orgcharthtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 orgchart.xml。可对生成的 orgcharthtml.xsl 运行它以生成 _orgchart_transform.html 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 orgcharthtml.xsl 和 orgchart.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换


奥赛罗样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 play.dtd 作为源输入,playhtml.xml 作为目标文件。playhtml.xml 提供了一个有关 html 输出外观的模板,另外也提供了一些静态数据。它包含了 html.dtd 以定义输出。在“根元素”页面,选择 SCENE 作为源文件的根元素。注意,最初并没有选择 SCENE 来作为根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 /SCENE/TITLE 元素。在“目标”视图中,选择 /html/head/title 元素。选择创建映射来在这两个元素之间创建映射。
  2. 在“源”视图中,再次选择 /SCENE/TITLE 元素。在“目标”视图中,现在选择 /html/body/h1/CENTER 元素。选择创建映射来在这两个元素之间创建映射。
  3. 在“源”视图中,选择 SPEECH 元素。在“目标”视图中,选择 table 下面的 tr 元素(即 /html/body/table/tr)。注意 SPEECH 元素和 tr 元素在当前上下文内都可重复。选择创建映射来在这两个元素之间创建映射。
  4. 在“源”视图中,选择 /SCENE/SPEECH/SPEAKER 元素。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第一个 td 元素。选择创建映射来在这两个元素之间创建映射。
  5. 在“源”视图中,选择 /SCENE/SPEECH/LINE 元素。在“目标”视图中,选择 /html/body/table/tr/td 路径上的第二个 td 元素。选择创建映射来在这两个元素之间创建映射。
  6. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:orgcharthtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 othello.xml。可对生成的 playhtml.xsl 运行它以生成 _othello_transform.html 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 playhtml.xsl 和 othello.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换


城市样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 cities.dtd 作为源输入,countries.dtd 作为目标文件。在“根元素”页面,选择 countries 作为目标根元素,cities 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 cities 下面的 city 元素(即 /cities/city)。在“目标”视图中,选择 countries 下面的 country 元素(即 /countries/country)。注意 city 元素和 country 元素都可重复。选择创建映射来在这两个元素之间创建映射。
  2. 在“目标”视图中,再次选择 country 元素并调用定义分组向导。然后,从提供的可能键列表中选择 @country。单击完成
  3. 在“源”视图中,选择 country 属性并将它映射到“目标”视图中的 name 元素。
  4. 在“源”视图中,选择 name 属性并将它映射到“目标”视图中的 city 元素。
  5. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:orgcharthtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 cities.xml。可对生成的 countries.xsl 运行此文件以生成一个结果 _cities_transform.xml 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 countries.xsl 和 cities.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换


学校样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 school.dtd 作为源输入,newschool.dtd 作为目标文件。在“根元素”页面,选择 school 作为目标根元素,school 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 school 下面的 student 元素(即 /school/student)。在“目标”视图中,选择 school 下面的 course 元素(即 /school/course)。注意 student 元素和 course 元素都可重复。选择创建映射来在这两个元素之间创建映射。
  2. 再次选择 course 元素并调用定义分组向导。然后,从提供的可能键列表中选择 course/text()。单击完成
  3. 在“源”视图中,选择 /school/student/name 属性并将它映射到“目标”视图中的名称 /school/course/student/name 属性。
  4. 在“源”视图中,选择 /school/student/course 元素并将它映射到“目标”视图中的 /school/course/name 元素。
  5. 在“源”视图中,选择 /school/student/birth 元素并将它映射到“目标”视图中的 /school/course/student/birth 属性。
  6. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:orgcharthtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 school.xml。可对生成的 newschool.xsl 运行此文件以生成一个结果 _school_transform.xml 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 newschool.xsl 和 school.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换


职员样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 employee.dtd 作为源输入,StructureEmployee.dtd 作为目标文件。在“根元素”页面,选择 Company 作为目标根元素,SQLResult 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 Employee 元素(即 /SQLResult/EMPLOYEE)。在“目标”视图中,选择 Department 元素(即 /Company/Department)。注意 EMPLOYEE 元素和 Department 元素都可重复。选择创建映射来在这两个元素之间创建映射。
  2. 再次选择 Department 元素并调用定义分组向导。然后,从提供的可能键列表中选择 DEPARTMENT/text()。单击完成
  3. 在“源”视图中,选择 /SQLResult/EMPLOYEE/NAME 元素并将它映射到“目标”视图中的名称 /Company/Department/Employee/Name 元素。
  4. 在“源”视图中,选择 /SQLResult/EMPLOYEE/SALARY 元素并将它映射到“目标”视图中的名称 /Company/Department/Employee/Salary 元素。
  5. 在“源”视图中,选择 /SQLResult/EMPLOYEE/BONUS 元素并将它映射到“目标”视图中的名称 /Company/Department/Employee/Bonus 元素。
  6. 在“源”视图中,选择 /SQLResult/EMPLOYEE/COMM 元素并将它映射到“目标”视图中的名称 /Company/Department/Employee/Comm 元素。
  7. 在“源”视图中,选择 /SQLResult/EMPLOYEE/DEPARTMENT 元素并将它映射到“目标”视图中的名称 /Company/Department/Name 元素。
  8. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:orgcharthtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 Employee.xml。可对生成的 StructureEmployee.xsl 运行此文件以生成一个结果 _Employee_transform.xml 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 StructureEmployee.xsl 和 Employee.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换


旅行样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 Airline.dtdHotel.dtd 作为源输入,Itinerary.dtd 作为目标文件。在“根元素”页面,选择 Itinerary 作为目标根元素,AirlineHotel 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 /Airline/Schedule/Flight 元素并将它映射到“输出”视图中的 /Itinerary/Flight
  2. 在“源”视图中,选择 /Airline/Schedule/Departure 元素并将它映射到“目标”视图中的 /Itinerary/Departure 元素。
  3. 在“源”视图中,选择 /Airline/Schedule/Arrival 元素并将它映射到“目标”视图中的 /Itinerary/Arrival 元素。
  4. 在“源”视图中,选择 /Hotel/Preference/HotelName 元素并将它映射到“目标”视图中的 /Itinerary/Hotel 元素。
  5. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:orgcharthtml.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 Airline.xml 和 Hotel.xml。可对生成的 Itinerary.xsl 运行它们以产成一个结果 _Itinerary_transform.xml 文件。

要将 XSLT 样式表应用到多个 XML 源:

  1. 在“导航器”视图中,选择 Itinerary.xml。
  2. 右键单击此文件并单击运行 > XSL 转换
  3. 在“启动配置”向导中选择主要选项卡。
  4. 在“主要”面板中,使用浏览工具来指定 XML 源 Airline.xml。
    注意,指定这两个源文件中的哪个并不重要。
  5. 单击应用
  6. 单击运行


驾驶方向导航样本

开始

要启动 XML 到 XML 向导,选择:
    文件 > 新建 > 其它 > XML > XML 到 XML 映射

在 XML 到 XML 映射向导中,选择 DrivingDirections.dtd 作为源输入,RoadTrip.dtd 作为目标文件。在“根元素”页面,选择 RoadTrip 作为目标根元素,Directions 作为源根元素。

在输入和输出之间定义映射

  1. 在“源”视图中,选择 Directions 元素并将它映射到“目标”视图中的 RoadTrip 元素。
  2. 在“源”视图中,选择 Start 元素,在“目标”视图中选择 StartingLocation 元素。现在选择映射 > 匹配映射。这将映射选择的节点以及具有共同名称的子节点(CityProvincePostalCode)。
  3. 在“目标”视图中,选择当前可视的选项成员 StartingLocation/Intersection。在其旁边会出现一个箭头。单击此箭头并通过从下拉菜单中双击 StreetAddress 来选择此条目。在“源”视图中,选择 Start/Street 元素并将它映射到“目标”视图中的 StartingLocation/StreetAddress 元素。
  4. 在“源”视图中,选择当前可视的选项成员 Start/Province。在其旁边会出现一个箭头。单击此箭头并通过从下拉菜单中双击 State 来选择此条目。在“目标”视图中,对 StartingLocation/Province 重复此操作。再次选择 Start/State 并将它映射到 StartingLocation/State
  5. 在“源”视图中,选择当前可视的选项成员 Start/PostalCode。在其旁边会出现一个箭头。单击此箭头并通过从下拉菜单中双击 Zip 来选择此条目。在“目标”视图中,对 StartingLocation/PostalCode 重复此操作。再次选择 Start/Zip 并将它映射到 StartingLocation/Zip
  6. 在“源”视图中,选择 End 元素,在“目标”视图中选择 Destination 元素。现在选择映射 > 匹配映射。这将映射选择的节点以及具有共同名称的子节点(CityProvincePostalCode)。
  7. 为“源”视图中的 End 元素和“目标”视图中的 Destination 元素的子节点重复步骤 3、4 和 5。
  8. 对“目标”视图中的 Mileage 元素添加一个 <xsl:choose> 指示。
    • 在“目标”视图中,选择 Mileage 元素。
    • 单击添加 xsl:choose 指示工具栏按钮。
    • 单击添加 When 来添加一个 <xsl: when> 条件。选择它。
    • 测试字段,通过手工或 XPath 表达式向导输入 XPath 表达式 ./Distance/Kilometers
    • 内容字段,输入内容 <xsl:value-of select="(./Distance/Kilometers div 1.609347)"/>
    • 单击添加 Otherwise 来添加一个 <xsl:otherwise> 条件。选择它。
    • 内容字段,输入内容 <xsl:value-of select="./Distance/Miles"/>
    • 单击完成
  9. 将映射保存到会话文件(.xmx)。

生成 XSLT

要生成 XSLT 脚本,遵循以下步骤:
  1. 在“导航器”视图中,右键单击您的 .xmx 文件并单击生成 XSLT...
  2. 选择将包含 XSLT 文件的文件夹。
  3. 输入 XSLT 文件的名称,例如:RoadTrip.xsl。文件名必须以 .xsl 结束。
  4. 单击“完成”。此文件将出现在“导航器”视图中并在 XSL 编辑器中打开。

单元测试

提供了样本源 DrivingDirections.xml。可对生成的 RoadTrip.xsl 运行此文件以生成一个结果 _DrivingDirections_transform.xml 文件。

要将 XSLT 样式表应用到 XML 源文件:

  1. 在“导航器”视图中,选择 RoadTrip.xsl 和 DrivingDirections.xml。
  2. 右键单击这些文件并单击运行 > XSL 转换