插入
将鼠标悬停在插入命令上,或选择此命令将展开一个子菜单,其中包含三个命令(如下所述):
插入文件路径
文件路径命令在任何类型的文档的文本视图和网格视图中都会被启用。您可以使用该命令在光标选择点插入文件的路径。单击该命令将弹出一个对话框(参见下方截图),您可以在其中选择所需的文件。
要选择所需的文件,请使用以下方式之一:(i) 通过浏览文件、URL或全局资源(使用浏览按钮);(ii) 通过选择打开文件的窗口(使用窗口按钮)。完成后,单击确定。所选文件的路径将被插入到活动文档中的光标处。
插入XInclude
XInclude命令在文本视图和网格视图中可用,并允许您在文本视图中的光标处,或在文本视图和网格视图中的选定项之前插入新的XInclude元素。如果网格视图中的当前选定内容是一个特性,则将在该特性之后,其父元素的第一个子元素之前插入XInclude元素。选择该命令将弹出“XInclude”对话框(参见下方截图)。
在href文本框中输入要包含的XML文件(或者,您可以通过单击文本框右侧的浏览(...)按钮来浏览文件)。文件名将作为href特性的值输入到XML文档中。XInclude元素(xi:include)的parse、xpointer和encoding特性,以及xi:include的fallback子元素也可以通过该对话框插入。为此,请先选中相应的复选框,然后选择/输入所需的值。对于fallback元素,选中其复选框后仅会插入一个空元素。fallback元素的内容必须随后在某个编辑视图中添加。
parse特性确定被包括的文档是被解析为XML,还是文本。(XML是默认值,因此不需要指定。)xpointer特性标识用href特性定位的文档的特定片段;这就是将被包括的片段。encoding特性指定被包括的文档的编码,以便XMLSpy可以将该文档(或要包括的文档部分)转码为包括文档的编码。如果无法找到要包括的文档,则fallback子元素的内容将替换xi:include元素。
以下是一个示例,其中XML文档使用了XInclude包括两个XML文档:
<?xml version="1.0" encoding="UTF-16"?>
<AddressBook xsi:schemaLocation="https://www.altova.com/sv/myaddresses AddressBook.xsd"
xmlns="https://www.altova.com/stylevision/tutorials/myaddresses"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="BusinessAddressBook.xml"/>
<xi:include href="PersonalAddressBook.xml"/>
</AddressBook>
在解析此XML文档时,它将使用在相应的href特性中指定的文件来替换两个XInclude元素。
xml:base
当XMLSpy的XML验证器读取一个XML文档并遇到XInclude命名空间中的include元素(以下称为xi:include)时,它会将该元素(xi:include)替换为xi:include元素的href特性中命名的XML文档。被包括的XML文档(或由XPointer标识的元素)的文档元素(根元素)将和xml:base特性一起被包括进来,以保留被包括的元素的基URI。如果生成的XML文档(包含被包括的XML文档或树片段)必须是根据Schema有效的,则被包括的文档的文档元素(或树片段的顶级元素)必须用允许xml:base特性的内容模型创建。如果Schema规定不允许在此元素上使用xml:base特性,则生成的文档将无效。有关如何使用XMLSpy的Schema视图在元素的内容模型中定义xml:base特性,请参见本文档的“Schema视图”部分的xml:Prefixed Attributes部分。
XPointer
XMLSpy支持XInclude中的XPointer。W3C相关的建议是XPointer Framework和XPointer element() Scheme建议。在XInclude元素中使用XPointer可以包括XML文档的特定部分,而不是整个XML文档。在XInclude元素中使用XPointer如下:
<xi:include href="PersonalAddressBook.xml" xpointer="element(usa)"/>
<xi:include href="BusinessAddressBook.xml" xpointer="element(/1/1)"/>
<xi:include href="BobsAddressBook.xml" xpointer="element(usa/3/1)"/>
<xi:include href="PatsAddressBook.xml" xpointer="element(usa)element(/1/1)"/>
在XPointer的element() scheme中,可以使用一个NCName或一个由整数定向的子序列。
•在上方列出的第一个xi:include元素中,xpointer特性使用了NCName为usa的元素方案。根据XPointer Framework,该NCName标识ID为usa的元素。
•在上方列出的第二个xi:include元素中,值为element(/1/1)的xpointer特性在第一步中标识文档根的第一个子元素(如果文档格式正确,它将是其文档或根元素)。在第二步中,会找到上一步中定位的元素的第一个子元素;在本例中,它是文档元素的第一个子元素。
•上方列出的第三个xi:include元素的xpointer特性使用了NCName和子序列的组合。此XPointer指向ID为usa的元素的第三个子元素的第一个子元素。
•如果您不确定第一个XPointer是否能有效工作,您可以用第二个作为备份,如上方列出的第四个xi:include元素所示:xpointer="element(usa)element(/1/1)”。在这里,如果没有ID为usa的元素,则备用的XPointer会指定要选择文档元素的第一个子元素。额外的备份也是允许的。单个XPointer可以不分开,也可以用空格分开:例如,xpointer="element(usa)element(addresses/1) element(/1/1)"。
提示: | 命名空间绑定上下文不用于element() scheme,因为element() scheme不支持限定名称。 |
插入外部编码文件
外部编码文件命令在文本视图和网格视图中可用。它使外部文件可以作为Base-16或Base-64编码的文本包含在XML文档的任何位置。此功能允许在XML文档中嵌入外部文件。
单击插入 | 外部编码文件命令将弹出“插入外部编码文件”对话框(参见下方截图)。
您可以导航到或输入要被编码和嵌入的外部文件的名称。必须指定Base-16编码或Base-64编码。如果您希望将编码文本括在元素中,请选择创建元素并指定所需元素的名称(参见上方截图)。或者,选择创建文本以直接在光标位置插入编码文本。
单击确定后,将在光标位置插入所选文件的编码文本,并带有封闭元素(如果已指定)。
<img ext="png" encoding="xs:base64Binary">
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
g9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC
</img>
上方代码显示了PNG图像文件的编码文本,在编码文本周围创建了一个img元素。