相关疑难解决方法(0)

当我的所有.XSD存储为资源时,如何解析.XSD的schemaLocation属性?

我正在开发一个项目,我需要根据嵌套的XSD生成XML文件.例如,ORDER引用了PERSON,PERSON引用了ADDRESS等.

我正在创建一个`XmlReaderSettings'实例来验证XSD,并在生成后验证XML.

我已将XSD作为资源添加到我的程序集中.然后,我XmlSchema为每个资源创建一个实例,从最低到最高,并将其添加到XmlReaderSettings.Schemas集合中.

但是,尝试添加引用另一个架构的架构时失败.我得到一个XmlSchemaException:"对于元素声明,必须存在name或ref属性."

我在下面列出了示例XSD和源代码:

ADDRESS.xsd - 由PERSON.xsd引用

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ADDRESS.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ADDRESS" >
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ADDRESS1" type="xs:string"/>
        <xs:element name="ADDRESS2" type="xs:string"/>
        <xs:element name="CITY" type="xs:string"/>
        <xs:element name="STATE" type="xs:string"/>
        <xs:element name="ZIP" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

PERSON.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="PERSON.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="ADDRESS.xsd"/>
  <xs:element name="PERSON" >
    <xs:complexType>
      <xs:sequence>
        <xs:element name="L_NAME" type="xs:string"/>
        <xs:element name="F_NAME" type="xs:string"/>
        <xs:element name="Addresses">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="ADDRESS" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element> …
Run Code Online (Sandbox Code Playgroud)

c# xml xsd .net-4.0

7
推荐指数
1
解决办法
8588
查看次数

标签 统计

.net-4.0 ×1

c# ×1

xml ×1

xsd ×1