如何在XML中为W3C标记验证服务引用XSD



我想创建一个遵循XML模式http://www.oid-info.com/oid.xsd的XML。这个XSD应该以某种方式在XML文件中引用,以便像https://validator.w3.org/这样的工具可以检查它以发现数据语义中的错误,例如当电子邮件地址无效时。

首先,我试着这样做:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<oid-database xmlns="http://www.oid-info.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oid-info.com/oid.xsd">
<submitter>
....
</submitter>
<oid>
....
</oid>
</oid-database>
W3C标记验证服务说:

没有找到DOCTYPE !仅检查XML语法。DOCTYPE声明未被识别或丢失。这可能意味着正式的公共标识符包含拼写错误,或者声明没有使用正确的语法,或者您的XML文档没有使用DOCTYPE声明。已跳过对文档的验证,并且对XML语法的格式良好性进行了简单的检查执行。

好的,所以我尝试使用DOCTYPE

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE oid-database>
<oid-database xmlns="http://www.oid-info.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oid-info.com/oid.xsd">
<submitter>
....
</submitter>
<oid>
....
</oid>
</oid-database>

现在W3C验证器说:

第2行,第23列:没有内部或外部文档类型声明子集;将在没有验证的情况下进行解析

我确实知道DTD是什么,而且我过去曾使用过DTD。我知道这里缺少DTD。但是我想检查XSD,而不是DTD。

我要怎么做才能让它工作?

W3C Validator将检查格式是否良好,并根据DTD进行验证;它不针对XSD进行验证。您必须使用另一个在线或离线验证器。

此外,下面是您的XML文件应该如何看起来暗示它应该针对OID XSD进行验证:

<?xml version="1.0" encoding="UTF-8" ?>
<oid-database xmlns="http://oid-info.com"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://oid-info.com 
                                  http://www.oid-info.com/oid.xsd">
  <submitter>
    ....
  </submitter>
  <oid>
    ....
  </oid>
</oid-database>

参见:如何使用schemaLocation或noNamespaceSchemaLocation链接XML到XSD ?

注意,这些xsd似乎有它们自己的问题,包括:

[警告]xhtml-light。xsd: 36: schema_reference。4:读取失败模式文档"xml"。Xsd ',因为1)找不到文件;2)这份文件无法阅读;3)文档的根元素为不是。

(错误)oid。xsd:91:46: InvalidRegex:模式值"{? s * (((([a - z] [a-zA-Z0-9 -] s (( s * (0 | [1 - 9] [0 - 9] ) s )) ? | (0 | [1 - 9] [0 - 9] ))) {2,} s ) | ((0 | [1 - 9] [0 - 9] )(。(0 | [1 - 9][0 - 9])) )) s } ?"不是一个有效的正则表达式。

最新更新