使用 xs:extension 忽略元素顺序

2024-04-19

我该如何设计我的xsd忽略元素的顺序?

<root> <a/> <b/> </root>
<root> <b/> <a/> </root>

我需要使用extension http://www.w3schools.com/schema/el_extension.asp出于代码生成的原因,所以我尝试使用以下方法all http://www.w3schools.com/schema/el_all.asp:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.example.com/test"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:t="http://www.example.com/test" >

    <xs:complexType name="BaseType">
        <xs:all>
            <xs:element name="a" type="xs:string" />
        </xs:all>
    </xs:complexType>

    <xs:complexType name="ExtendedType">
        <xs:complexContent>
            <xs:extension base="t:BaseType">
                <xs:all> <!-- ERROR -->
                    <xs:element name="b" type="xs:string" />
                </xs:all>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:element name="root" type="t:ExtendedType"></xs:element>
</xs:schema>

但此 xsd 无效,报告以下错误<!-- ERROR -->:

cos-all-limited.1.2:所有模型组必须出现在一个粒子中,其中 {min 发生} = {max 发生} = 1,并且该粒子必须是构成复杂类型的 {content type} 的一对的一部分定义。

的文档cos-all-limited.1.2 http://www.w3.org/TR/xmlschema-1/#cos-all-limited says:

1.2 粒子的 {term} 属性,其中 {max 出现}=1,它是构成复杂类型定义的 {content type} 的对的一部分。

我真的不太明白这个(既不是 xsd 也不是英语母语者:) ).


我是做错了事,还是做错了正确的事,还是没有办法实现这一目标?


主要编辑最初我错过了您需要使用的要求xsd:extension。注意xsd:extension就好像有一样xsd:sequence基本类型的内容后跟扩展类型的内容。正如 XML Schema Primer 所说:

当复杂类型派生为 扩展,其有效的内容模型 是基本类型的内容模型 加上指定的内容模型 类型推导。此外, 两个内容模型被视为两个 连续组的孩子。

因此,似乎使这项工作有效的唯一方法是拥有一个空的基本类型并将整个替代方案存储在扩展类型中,反之亦然(基本的所有内容和一个空的扩展)。像这样:

<xsd:complexType name="ExtendedType">
   <xsd:complexContent>
      <xsd:extension base="BaseType">
         <xsd:choice>
            <xsd:sequence>
               <xsd:element name="a" type="xsd:string"/>
               <xsd:element name="b" type="xsd:string"/>
            </xsd:sequence>
            <xsd:sequence>
               <xsd:element name="b" type="xsd:string"/>
               <xsd:element name="a" type="xsd:string"/>
            </xsd:sequence>
         </xsd:choice>
      </xsd:extension>
   </xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="BaseType"/>

<xsd:element name="root" type="ExtendedType"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 xs:extension 忽略元素顺序 的相关文章

随机推荐

  • 如何通过sql查询在数据库中只保存时间而不保存日期

    此查询正在保存完整的日期和时间 但我只想在数据库中保存时间而不是日期 有什么查询可以做到这一点吗 update table set current time now 您的列必须设置为 DATETIME 或 TIMESTAMP 如果您使用 T
  • 使用 Google Apps 脚本抓取动态网页

    我想使用其他网站读取项目的一些数据谷歌脚本 https script google com 有问题的页面是Dyanmic 它们包含在初始页面加载后通过 JavaScript 调用服务器加载的内容 通常 对于一些静态内容 这工作得很好 但我对
  • 无法将 CSS 应用于 html 字符串

    我正在尝试将 evoPDF 集成到我的 asp net 应用程序上 我通过 ajax 从我的 html 文件 onclick 发送部分 html 直到这一部分一切正常 现在 当我从 EvoPdf API 调用这些方法时 1 GetPdfBy
  • 如何计算连续行的时间差

    原始数据如下所示 我想按访问者和时间对其进行排序 以计算行中的时间差 然后将其保存到新文件中 visitor v time payment items 1 Jack 1 2 2018 16 07 35 3 2 Jack 1 2 2018 1
  • 在 C++ 中使用 realloc

    std realloc如果 malloc 的内存包含非 Pod 类型 则在 C 中是危险的 看来only问题是std realloc如果无法在原位增加内存 则不会调用类型析构函数 一个简单的解决方法是try realloc功能 如果新内存无
  • 如何在java中获取大尺寸数组

    我是java新手 我想在java中获取大输入大小的数组 但给了我一些运行时错误 NZEC 我不知道它 我也对此错误做了一些研究 但没有找到与我的问题相关的任何内容 long n sc nextLong n can be upto 10 9
  • YouTube API 身份验证 - Iphone

    我正在尝试使用 youtube api 的示例代码上传视频 当我按下上传按钮时 进度条完成其过程 但是一旦到达终点我就会收到错误 错误描述如下 YouTubeTest 2149 f803 错误 错误 Domain com google GD
  • 防止 TestNg 在并行测试之间共享数据

    Goal 并行独立运行 2 个类 其中每个测试将方法名称存储到稍后可以在测试中访问的变量中 Issue 当测试并行运行时 它们开始在彼此之间共享数据 从而破坏测试 如果您看到控制台输出 则这是错误的 INFO Name of Test fr
  • 我可以在 Javascript 中定义自定义运算符重载吗? [复制]

    这个问题在这里已经有答案了 是否可以在 JavaScript 中的类型实例之间定义自定义运算符 例如 假设我有一个自定义向量类 是否可以使用 vect1 vect2 检查是否相等 而底层代码会是这样的 operator a b return
  • 使用控件模板创建图像+文本按钮?

    我厌倦了一遍又一遍地创建相同的图像 文本按钮 我想将标记移动到控件模板 这是我的问题 我需要提供模板绑定以将图像和文本添加到模板化按钮 而 Button 控件似乎没有我可以绑定的属性 到目前为止 我的模板看起来像这样 带有 表示未知模板绑定
  • 如何在特定项目中禁用“初始化 JS/TS 语言功能”?

    我有一个 Laravel 项目在 Visual Studio Code 中开发它 另外 我在一个单独的项目中也有使用 Angular 8 的前端 该项目也使用 VSC 我构建 Angular 项目并将构建版本推送到 Laravel 项目中
  • eclipse项目未导入本地Maven仓库中的jar包

    我在设置 Eclipse 项目时遇到问题 问题是每当我创建一个新项目并导入代码时 Eclipse 不会解析 C user m2 repository 中存在的 jar 文件中存在的包 因此 它会给出很多编译错误 直到我通过 添加外部 Jar
  • 任务“:app:transformClassesWithDexForDebug”执行失败

    我正在尝试执行代码 但我在消息中收到错误消息梯度构建 that Execution failed for task app transformClassesWithDexForDebug Error Execution failed for
  • Jupyter + EMR + Spark - 从本地计算机上的 Jupyter 笔记本连接到 EMR 集群

    我是 PySpark 和 EMR 的新手 我尝试通过 Jupyter Notebook 访问 EMR 集群上运行的 Spark 但遇到错误 我使用以下代码生成 SparkSession spark SparkSession builder
  • 从文件读取时在 clojure 中分割行

    我正在学校学习 clojure 马上就要考试了 我只是在做一些事情以确保我掌握了窍门 我试图从文件中逐行读取 正如我所做的那样 只要有 我就想分割该行 到目前为止 这是我的代码 defn readFile map fn line cloju
  • 属于 cakephp 和 html select 中的问题,我不明白该怎么做

    cakephp菜鸟提出的简单问题 我有两个模型 玩家和团队 Team 有一个id int 和一个cool name varchar 玩家有一个 id int 一个 Cool name varchar 和一个团队表引用 team id int
  • 如果购物车商品来自某些特定产品类别,请删除结帐字段

    我使用 WooCommerce Checkout Manager 在账单部分添加自定义字段 但仅当我有指定类别的某些产品时才需要显示此字段 这些字段是必需的 我写了这段代码 add filter woocommerce checkout f
  • 从 PHP 中具有动态类名的类获取静态属性

    我有这个 一个保存类名的字符串变量 classname 一个字符串变量包含属性名称 propertyname 我想从该类获取该属性 问题是 该属性是静态的 我不知道该怎么做 如果该属性不是静态的 则它将是 classname gt prop
  • 使用 matplotlib 在 wxpython 面板中组合按键和鼠标按钮事件

    In a wxPython我想使用的面板matplotlib s Lasso http matplotlib org api widgets api html highlight lasso matplotlib widgets Lasso
  • 使用 xs:extension 忽略元素顺序

    我该如何设计我的xsd忽略元素的顺序