Altova XMLSpy 2023 Enterprise Edition

目录可用于重定向DTD和XML Schema。虽然这两种情况的机制背后的概念是相同的,但细节是不同的,下面将进行解释。

 

DTD

目录通常用于将对DTD的调用重定向至本地URI。这是通过在目录文件中将公共或系统标识符映射到所需的本地URI来实现的。因此,当一个XML文件中的DOCTYPE声明被读取时,其公共或系统标识符通过目录文件的映射来定位所需的本地资源。

 

对于流行的Schema,PUBLIC标识符通常是预定义的,因此只需要目录文件中的URI将PUBLIC标识符映射到正确的本地副本。解析XML文档时,其中的PUBLIC标识符将被读取。如果在目录文件中找到此标识符,则将在目录文件中查找相应的URL,并从该位置读取Schema。例如,如果在XMLSpy中打开以下SVG文件:

 

<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"

"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

 

<svg width="20" height="20" xml:space="preserve">

 <g style="fill:red; stroke:#000000">

    <rect x="0" y="0" width="15" height="15"/>

    <rect x="5" y="5" width="15" height="15"/>

 </g>

</svg>

 

在目录中搜索此SVG文件的PUBLIC标识符。假设目录文件包含以下条目:

 

<catalog>

 ...

   <public publicId="-//W3C//DTD SVG 1.1//EN" uri="schemas/svg/svg11.dtd"/>

 ...

</catalog>

 

在这种情况下,有一个匹配的PUBLIC标识符。因此,对SVG DTD的查找被重定向至URLschemas/svg/svg11.dtd(相对于目录文件)。这是一个本地文件,将被用作SVG文件的DTD。如果目录中没有Public ID的映射,则将使用XML文档中的URL(在上方的SVG文件示例中,网络URL为http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd)。

 

XML Schema

在XMLSpy中,您还可以将目录和XML Schema一起使用。在XML实例文件中,对Schema的引用将出现在XML文档顶级元素的xsi:schemaLocation特性中。例如,
 

xsi:schemaLocation="http://www.xmlspy.com/schemas/orgchart OrgChart.xsd"

 

xsi:schemaLocation特性的值有两部分:命名空间部分(上方绿色部分)和URI部分(突出显示部分)。命名空间部分在目录中被用来映射到备用资源。例如,以下目录条目将上述Schema引用重定向至一个备用位置的的Schema。

 

<uri name="http://www.xmlspy.com/schemas/orgchart" uri="C:\MySchemas\OrgChart.xsd"/>

 

通常,xsi:schemaLocation特性值的URI部分是指向实际Schema位置的路径。然而,如果通过目录引用Schema,则URI部分不必指向实际的XML Schema,但必须存在,以便保持xsi:schemaLocation特性的词法有效性。例如,值foo足以使特性值的URI部分有效。

 

 

© 2017-2023 Altova GmbH