【问题标题】:How to switch to XSD 1.1 from 1.0?如何从 1.0 切换到 XSD 1.1?
【发布时间】:2015-08-17 12:09:01
【问题描述】:

我的 xsd 配置中有以下标头:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns="http://www.mycompany.com/schema/app"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.mycompany.com/schema/app"
           elementFormDefault="qualified">

切换到 XSD 1.1 需要什么?

需要开始使用&lt;xs:assert/&gt;标签。

【问题讨论】:

    标签: xml xsd schema


    【解决方案1】:

    编辑:这个答案错了​​ 6 年。我最初声称添加version 属性声明模式符合XML Schema 1.1 标准。但是,this attribute has nothing to do with the XSD version, it can be used for any arbitrary user-defined versioning

    我现在已经删除了虚假信息。


    表明您的 XML Schema 文档遵循 ​​XML Schema 1.1 规范意味着将以下内容添加到最外层元素:

    • 为 XML Schema 版本控制定义命名空间:xmlns:vc=http://www.w3.org/2007/XMLSchema-versioning
    • 添加属性vc:minVersion = "1.1"

    这是xs:schema 元素的示例:

    <xs:schema xmlns="http://www.mycompany.com/schema/app"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.mycompany.com/schema/app"
           elementFormDefault="qualified"
           xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
           vc:minVersion="1.1">
    

    即使您添加此信息,您的架构处理器也可能无法处理 XSD 1.1 构造(如断言),并且表明 1.1 版不会神奇地启用 1.1 处理。

    换句话说,“切换”到 XSD 1.1 并不意味着在您的 xs:schema 元素中提及版本,它意味着确保您的架构处理器理解 XML 架构 1.1。要找出答案,只需在架构中包含 xs:assert 元素并检查是否收到任何错误消息。也许您的工具中有一个架构版本的设置,就像在 Oxygen 中一样:

    有关设置 XML 架构版本的更多方法,请参阅 Oxygen documentation

    顺便说一句:如果不支持 XSD 1.1,可能仍然支持 Schematron - 一种对断言和类似规则非常有用的语言。

    【讨论】:

    • version 属性是针对你的架构的版本号,而不是表示正在使用的 W3C XSD 的版本。
    • 感谢您的评论@elmor!是的,这个答案确实是错误的。我相信我可以编辑答案来改进它而不是删除它,因为有额外的信息(例如,如果不能使用 XSD 1.1,可能支持也有断言的 Schematron)。
    • 感谢您的编辑。你的答案现在很完美!我投了赞成票。 :)
    【解决方案2】:

    我相信根架构元素中的版本属性将用于您组织的命名空间架构的版本,而不是用于 XML 架构的版本。

    如果要在架构中指示 W3C XML Schema 标准版本,请使用:xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning",然后使用 vc:minVersion="1.1"在根架构标签中。

    在 XML 文档实例中,在根元素之前的标头 &lt;?xml version="1.1"?&gt; 用于指示 XML 符合具有更好语言支持和其他特性的更新版本的 XML(请参阅 W3C XML 1.1 规范)。

    【讨论】:

    • 此答案正确描述了如何在 XSD 文档中指示 XML Schema 标准的版本(+1!)。但是,我认为 XML 声明中的version 信息并没有描述应该使用哪个版本的 XML Schema 标准来为这个 XML 文档编写模式。
    • @Mathias Müller:谢谢;我更正了我上面关于 XML 1.1 的陈述。你是对的,它与 XSD 一致性无关。
    猜你喜欢
    • 2013-06-02
    • 2015-08-30
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2020-03-28
    相关资源
    最近更新 更多