XML Schema - 验证同名元素

问题描述

我有 URL urlObj = new URL(url); URLConnection urlCon = urlObj.openConnection(); urlCon.setRequestProperty("User-Agent","Java Client; Mac OS"); urlCon.setRequestProperty("Accept","text/html"); urlCon.setRequestProperty("Accept-Language","en-US"); urlCon.setRequestProperty("Connection","close"); 元素,可以另选定义(节点中只有一个元素):

  1. 作为 xs:string <range>

  2. 或作为复杂类型:

<range>STH</range>

如何验证? 我试过这样做:

<range>
   <value>0x00</value>
   <value>0x01</value>
   <value>0x02</value>
</range>

但仍然出现错误

提前致谢

解决方法

一个元素不能有两种类型。语法将是模棱两可的。即使是两个简单的类型也是无效的。

<xs:complexType>
    <xs:choice>
        <xs:element name="range" type="xs:integer"/>
        <xs:element name="range" type="xs:string"/>
    </xs:choice>
</xs:complexType>

对于 details,请参阅标准。

必须形成一个内容模型,以便在元素信息项序列的·验证·期间,直接、间接或·隐含地包含在其中的粒子组件可以依次尝试·验证·序列中的每个项目唯一确定,无需检查该项目的内容或属性,也无需任何关于序列剩余部分中的项目的信息。

如果您有两个“范围”元素,一个是 A 类,一个是 B 类,则只能通过分析内容来区分它们。这是不允许的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...