如何在XML文档中使用本地机器上的Schema

时间:2011-01-31 21:41:54

标签: xml validation xsd

我对XML / Schema文件的了解有限。

所以这应该是一个相当简单的问题。 如何为schemaLocation指定本地文件?

<?xml version="1.0"?>

<note
  xmlns="http://www.w3schools.com"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3schools.com note.xsd">
  ...
</note>

这是来自www.w3.org的示例,指定架构的部分位于schemaLocation中。 我试着查看文档,但是如何指定本地文件?

这样的东西
xsi:schemaLocation="../relativepath/schemafolder not.xsd">

由于

1 个答案:

答案 0 :(得分:24)

schemaLocation必须包含由空格分隔的两个值:名称空间URI(不会更改)和架构URL。

所以在你的情况下

 xsi:schemaLocation="http://www.w3schools.com ../relativepath/schemafolder/note.xsd">

不要被名称空间URI作为一个看似有效的http url所迷惑,这只是XML人发明的小麻烦之一。 :)

实际上,您可以在一个schemaLocation中为多个名称空间指定模式:

xsi:schemaLocation="namespace1 schemaurl1 namespace2 schemaurl2 ..."

(我还建议您谨慎使用相对路径:虽然当您移动文件但仍然使用相同的代码(或工具)验证它们时它们非常有用,当您在应用程序中部署验证代码时, “工作目录”可能不是你所期望的。这并不是说你不应该使用相对路径,只是当你得到一个关于未找到的模式的奇怪的异常时才意识到这一点。)