【问题标题】:What is the purpose of DOCTYPE header at the start of an XSDXSD 开头的 DOCTYPE 标头的目的是什么
【发布时间】:2012-04-17 16:10:10
【问题描述】:

我发现我在应用程序中使用的 xmldsig-core-schema.xsd 文件有一个标头,该标头在编组器实例化期间导致对 w3.org 的 HTTP 请求,我删除了此标头,现在我想知道它是否可以对 XML 文档的验证产生任何影响。我熟悉在 HTML 或 XML 文档上使用 DOCTYPES,但它在 XSD 文件上的用途是什么?

xsd 位于:http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd

有问题的sn-p是:

<?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


    【解决方案1】:

    XSD 文件只是另一个 XML 文件。因此,它的作用与您提到的您熟悉的其他实例相同。

    继续阅读,它期望:

    • 具有已定义的 xmlns:ds 属性的架构元素,具有固定值
    • 用户定义的实体 dsig,应替换为 http://www.w3.org/2000/09/xmldsig#
    • 两个参数实体,%p 和 %s,在遇到的地方被替换为空字符串。对于这两个,您必须查看 XMLSchema.dtd,并注意使用 %p 和 %s 实体,将命名空间前缀定义为 xs: in schema document;在 dsig 案例中,作者倾向于不使用前缀。

    【讨论】:

    • 好吧,我仍然不明白为什么不使用 XMLSchema.xsd 来定义 xsd 的模式类型,或者为什么作者需要定义你提到的那些规则,你能告诉我是否删除这个标题会对该模式的 XML 实例的验证产生任何影响吗?
    • 对任何 XML 实例文档都没有影响。 XMLSchema.xsd 是架构的架构;但是,对于您提到的 DTD 是“修正”的某些事情,它确实依赖 DTD。然而,这更多地与模式创作风格有关(例如,不使用前缀),并且它对 XML 没有影响。如果我可以这样说,它是“非常正确的”。严格来说,任何对 XSD 文件的验证,使用模式的模式,使用处理 DTD 的验证器,都可能会抱怨使用 xs: 以外的前缀,即使我们知道前缀的选择是任意的。
    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 2018-06-04
    • 2017-08-19
    • 2022-10-24
    • 1970-01-01
    • 2013-04-19
    • 2011-05-17
    • 2020-08-03
    相关资源
    最近更新 更多