XSD开头的DOCTYPE头的用途是什么
我发现我在应用程序中使用的xmldsig-core-schema.xsd文件有一个标头,在marshaller实例化过程中导致了对w3.org的HTTP请求,我删除了这个标头,现在我想知道它是否会对XML文档的验证产生任何影响。我熟悉在HTML或XML文档上使用doctype,但在XSD文件上使用doctype的目的是什么 xsd可从以下网址获得: 有问题的片段是:XSD开头的DOCTYPE头的用途是什么,xsd,Xsd,我发现我在应用程序中使用的xmldsig-core-schema.xsd文件有一个标头,在marshaller实例化过程中导致了对w3.org的HTTP请求,我删除了这个标头,现在我想知道它是否会对XML文档的验证产生任何影响。我熟悉在HTML或XML文档上使用doctype,但在XSD文件上使用doctype的目的是什么 xsd可从以下网址获得: 有问题的片段是: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE schema
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd" [
<!ATTLIST schema
xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
<!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
<!ENTITY % p ''>
<!ENTITY % s ''>
]>
<!-- Schema for XML Signatures ...
-->
<schema...
]>
XSD文件只是另一个XML文件。因此,它的作用与您所熟悉的其他实例相同
继续阅读,它期望:
- schema元素具有定义的xmlns:ds属性,具有固定值
- 用户定义的实体dsig,应替换为
- 两个参数实体%p和%s,将在遇到时替换为空字符串。对于这两个,您必须查看XMLSchema.dtd,并注意使用了%p和%s实体,以便在schema文档中将名称空间前缀定义为xs:in;在dsig案例中,作者倾向于不使用前缀
XSD文件只是另一个XML文件。因此,它的作用与您所熟悉的其他实例相同
继续阅读,它期望:
- schema元素具有定义的xmlns:ds属性,具有固定值
- 用户定义的实体dsig,应替换为
- 两个参数实体%p和%s,将在遇到时替换为空字符串。对于这两个,您必须查看XMLSchema.dtd,并注意使用了%p和%s实体,以便在schema文档中将名称空间前缀定义为xs:in;在dsig案例中,作者倾向于不使用前缀
我仍然不明白为什么不使用XMLSchema.xsd来定义xsd的模式类型,或者为什么作者需要定义您提到的那些规则,您能告诉我删除此标题是否会对该模式的XML实例的验证产生任何影响吗?对任何XML实例文档都没有影响。XMLSchema.xsd是该模式的模式;然而,它确实依赖于DTD来完成某些事情,您提到的DTD是“ammending”。但是,这与模式编写风格(例如,不使用前缀)有更多关系,并且对XML没有影响。如果我可以这样说的话,这是“非常正确的”。严格地说,使用模式的模式、使用处理DTD的验证器对XSD文件进行的任何验证都可能会抱怨使用了除xs:prefix之外的其他,尽管我们知道前缀的选择是任意的,但我仍然不明白为什么不使用XMLSchema.xsd来定义xsd的模式类型,或者为什么作者需要定义您提到的那些规则,您能告诉我删除此标题是否会对该架构的XML实例的验证产生任何影响吗?对任何XML实例文档都没有影响。XMLSchema.xsd是该模式的模式;然而,它确实依赖于DTD来完成某些事情,您提到的DTD是“ammending”。但是,这与模式编写风格(例如,不使用前缀)有更多关系,并且对XML没有影响。如果我可以这样说的话,这是“非常正确的”。严格地说,使用模式的模式、使用处理DTD的验证器对XSD文件进行的任何验证都可能会抱怨使用了除xs:prefix之外的其他前缀,尽管我们知道前缀的选择是任意的。