0

我对为什么我的 XML 模式无法通过 Java 的 xml 模式验证感到困惑。我从代码链接获得了我的 java 验证代码。它应该是标准的东西。有人告诉我,从以下位置开始发现问题:属性。它在 lineNumber: 8; 列号:48。

我的xml是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name ="Entries">
  <xs:complexType>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="entry">
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
      </xs:element>
    </xs:sequence>
   </xs:complexType>
  </xs:element>

</xs:schema>
4

2 回答 2

1

你不见了”

第 8 行和第 9 行应该是

<xs:attribute name="key" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
于 2013-07-02T19:57:57.070 回答
1

第 8 行和第 9 行都缺少type属性的右引号。这个固定的 XML 为我通过了验证:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name ="Entries">
  <xs:complexType>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="entry">
        <xs:attribute name="key" type="xs:string"/>
        <xs:attribute name="value" type="xs:string"/>
      </xs:element>
    </xs:sequence>
   </xs:complexType>
  </xs:element>

</xs:schema>

编辑 1

好的,经过进一步检查,结果证明 xml 格式不正确。<xs:attribute>标签不能是标签的子标签<xs:element>。如果您尝试在“entry”元素上定义两个属性,您的架构定义需要如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="Entries">
    <xs:complexType>
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:element name="entry">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="key" type="xs:string"/>
                <xs:attribute name="value" type="xs:string"/>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>
于 2013-07-02T19:59:15.243 回答