编辑和验证 XML 文件样本详细信息 |
||||||||||
示例概述这是一些示例,它们告诉您如何使用 XML 编辑器中的某些向导式编辑功能部件来编辑和验证 XML 文件。有关编辑带有 DTD 和 XML 模式约束的 XML 文件的更多信息,请参阅 XML 编辑器联机帮助。
|
||||||||||
any 元素此示例告诉您如何使用 XML 模式中的 any 元素来在 XML 文档中创建可扩展内容模型。此示例分为两个目录:
使用 ##any 名称空间anyNamespace 目录下面的 Book.xsd 模式具有一个复杂类型 BookType。BookType 的内容为:title、author、year 和 isbn,然后可选择是否如 any 元素所指示的那样紧跟任何结构良好的 XML。
这意味着在实例文档中,我们可插入任何 XML 元素来扩展 BookType 的定义。在此示例中,我们还具有另外两个模式:Publisher.xsd 和 Reviewer.xsd。我们将使用它们来在实例文档中扩展 BookType 的定义。注意,这两个模式是在不同的名称空间中。 BookRev.xml 通过 xsi:schemaLocation 属性与 Book.xsd 和 Reviewer.xsd 两者关联。它告诉您如何使用 reviewer 元素来扩展 BookType 以对书籍提供审核批注。
使用特定名称空间specifiedNamespace 目录下面的 Book.xsd 模式具有一个复杂类型 BookType。BookType 的内容为:title、author、year 和 isbn,然后可选择是否如 any 元素所指示的那样紧跟任何结构良好的、属于名称空间 http://www.wesley.com 的 XML。
这意味着在实例文档中,只要有任何 XML 元素属于名称空间 http://www.wesley.com,我们可插入它们来扩展 BookType 的定义。在此示例中,Reviewer.xsd 文件属于此名称空间。 Book.xml 通过 xsi:schemaLocation 属性与 Book.xsd 和 Reviewer.xsd 两者关联。它告诉您如何使用 reviewer 元素来扩展 BookType 以对书籍提供审核批注。 对于 Book.xml,在 XML 编辑器的“设计”视图中,选择 rev:reviewer 元素。从弹出菜单中,选择添加子代 -> comment 来对 reviewer 添加一个 comment。运行验证,确信文档是有效的。 从带有 any 元素的模式生成实例可使用“新建 XML”向导来创建 XML 模式的实例。如果模式包含指定了名称空间 uri 的 any 元素(例如 specifiedNamespace 目录中 Book.xsd 的 BookType),向导会提示您为这些名称空间输入模式位置。
对 XML 文档添加名称空间XML 编辑器提供了一个方便的机制来对一个 XML 文档添加多个名称空间。手工添加名称空间(即,通过在源代码视图中输入)容易导致错误;输入模式名称空间 URI 时很容易出现拼写错误,并且也容易在模式位置属性的语法上出现错误。提供了一个有用的对话框来帮助您完成此任务。从“大纲”或“设计”视图中,可使用编辑模式信息对话框来帮助您完成此任务。
|
||||||||||
发票Invoice.dtd 文件提供了定义 Invoice.xml 文件内容的规则。它通过 DOCTYPE 声明与 Invoice.xml 相关联。 顺序内容模型此 Invoice 元素具有一个类似如下的内容模型: 在 XML 编辑器的“设计”视图中,选择 Invoice 元素。从弹出菜单中,选择添加子代 -> Item 来对 Invoice 元素添加一个 Item。可重复此步骤来对 Invoice 元素添加尽可能多的 Item。 选项内容模型此 Date 元素具有一个类似如下的内容模型: 可在 XML 编辑器的“设计”视图中轻而易举地在这两组之间切换;首先选择 Month、Day 和 Year 这几项元素(在选择它们时按住 Ctrl 键)。然后从弹出菜单中,选择替换为 -> (Day, Month, Year) 来使用第二组来替换它。 枚举属性类型Item 元素具有一个 discount 属性,其值可设置为 promotion 或 regular。在 XML 编辑器的“设计”视图中,选择 discount 属性。会出现一个组合框,从中您可在这两个值之间进行选择。或者,在源代码视图中,对 discount 属性选择内容辅助以在这两个值之间进行选择。 |
||||||||||
编辑 PurchaseOrder.xmlPurchaseOrder.xsd 文件提供了定义 PurchaseOrder.xml 文件内容的规则。它通过 xsi:schemaLocation 属性与 PurchaseOrder.xml 文件关联。 出现约束在 PurchaseOrder.xsd 中,item 元素(在复杂类型 Item 下面)具有可选的 shipDate 元素,并且 minOccurs=0: 对于 PurchaseOrder.xml,在 XML 编辑器的“设计”视图中,选择 Item 元素下面的第一个 item。从弹出菜单中,选择添加子代 -> shipDate 来对 item 元素添加一个 shipDate。添加了一个值设置为当前日期的 shipDate 元素。注意添加子代弹出菜单现在不再具有 shipDate 选项,因为满足了至多具有一个 shipDate 元素的约束。 如果选择 shipDate 元素并从弹出菜单中选择除去来除去它,则会再次出现添加子代-> shipDate 选项。 枚举元素类型在 PurchaseOrder.xsd 中,USAddress 复杂类型具有一个元素 state,该元素的类型为简单类型 USState USState 简单类型是从如下带有枚举特征的字符串中派生出来的: 在实例文档中使用派生类型(xsi:type 属性)ipo.xml 文件告诉您如何将货物发送到英国而将帐单寄到美国地址。在 ipo.xsd 中,billTo 和 shipTo 元素都被定义为 Address 类型: <element name="shipTo" type="ipo:Address"/> <element name="billTo" type="ipo:Address"/>在 address.xsd 中,两个复杂类型 USAddress 和 UKAddress 扩展了基本类型 Address。 实例文档 ipo.xml 通过使用 xsi:type 属性可选择使用 Address 的不同派生项(例如 USAddress)。 在 XML 编辑器的“设计”视图中,选择 shipTo 元素下面的 xsi:type 属性。注意,现在提供一个组合框来选择想要使用的 Address 类型。向导式辅助将基于在此组合框中选择的类型。 使用多个模式和名称空间此季度报告示例告诉您如何处理来自不同名称空间的多个模式。它在 PurchaseOrder/international 目录下面包含了下列文件:address.xsd,ipo.xsd、report.xsd 和 report.xml。 随着模式变得更大,为了便于维护、重用和获得更好的可读性,经常需要将其内容分割到几个模式文档中。XML 模式定义了以下两个构造来支持此操作:include 和 import。include 元素将来自被包含模式的定义和声明引入到当前模式中。它要求被包含模式与包含模式处在同一目标名称空间中。import 元素的行为相似,不同的是导入的模式可来自不同的名称空间。 |
||||||||||
使用替换组XML 模式允许命名的元素组替换其它元素。Catalogue.xsd 文件声明 Book 和 Magazine 处在 Publication 的替换组中: <element name="Book" type="Catalogue:BookType"Catalogue 的内容可为替换组中的任何元素。在 XML 编辑器的“设计”视图中,对 Catalogue 元素选择“添加子代”菜单。注意 Book 和 Magazine 都可替换 Publication 元素的内容。另外,已将 Publication 元素声明为 abstract,以避免在实例文档中直接使用 Publication 元素。 |