java - 我的 XML 模式有什么问题?

标签 java xml xsd

这是 my.xsd 中的架构:

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' 
  xmlns:p='some-namespace' targetNamespace='some-namespace'>
  <xs:element name='root' type='p:main'/>
  <xs:complexType name='main'>
    <xs:sequence>
      <xs:element name='alpha' type='xs:string' />
    </xs:sequence>
  </xs:complexType>
</xs:schema>

这是我要验证的 XML 文档:

<root xmlns='some-namespace' 
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
  xsi:schemaLocation='some-namespace my.xsd'>
  <alpha>xxx</alpha>
</root>

SAX 解析器说:

"Invalid content was found starting with element 'alpha'. One of 
'{alpha}' is expected."

怎么了?

最佳答案

你必须添加

elementFormDefault="qualified"

在您的架构定义中。不使用相对命名空间也是一个好主意,即使用这样的东西:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:p="http://some-namespace" targetNamespace="http://some-namespace"
elementFormDefault="qualified">

关于java - 我的 XML 模式有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915411/

相关文章:

c# - 为什么 XSD 序列显示不明确

xml - 我如何描述一个节点中对另一个节点的引用?

java - 如何实现SSL认证

java - 尝试将行插入表时出现 SQL 语法错误异常

java - 基于兄弟节点的条件xquery

php - Word XML 到 HTML(备选方案)

java - 如何使用maven pom xml文件创建目录结构

java - 使用 Jquery 和 servlet 检索图像会产生 HTTP Status 500 错误

java - 如何在元素级别而不是属性上区分XML?

c# - 当标记包含 xmlNamespace 时,SelectSingleNode 返回 null