我有以下XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:com.xxxxx.xxx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:com.xxxxx.xxx">
<xsd:element name="Stuff_EXT" type="DT_Analyse_EXT"/>
<xsd:complexType name="Stuff_EXT">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Data Type Response</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="Res">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Loc" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="No" type="xsd:string"/>
<xsd:attribute name="TP" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Results" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="C" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="Date" type="xsd:string"/>
<xsd:attribute name="Result" type="xsd:string"/>
<xsd:attribute name="Rel" type="xsd:string"/>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Detail" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="Co" type="xsd:string"/>
<xsd:attribute name="Result" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我尝试在Visual Studio 2010 Professional中使用它。
VS告诉我<xsd:complexType>
之后的<xsd:attribute name="Rel" type="xsd:string"/>
是非法的。因此我无法在VS中使用XSD文件。
XSD /表的层次结构是固定的,我无法输入。有没有办法保持元素&#34;细节&#34;作为&#34; C&#34;的一个子元素在归属之后?
由于我提供了这个文件定义,我自己没有开发XSD,如果需要,需要对其进行调整。
答案 0 :(得分:1)
属性声明必须在 complexType 之后,否则您将收到如下错误:
[错误] try.xsd:26:40:s4s-elt-invalid-content.1:的内容 &#39;#AnonType_CResultsResStuff_EXT&#39;是无效的。元素&#39; complexType&#39;是 无效,错位或过于频繁发生。
解决方案:将属性声明移到xsd:complexType
元素下方(并移除额外的xsd:complexType
)。
还有另一个问题需要解决:
[错误] try.xsd:3:56:src-resolve:无法解析名称 &#39; DT_Analyse_EXT&#39;到(n)&#39;类型定义&#39;零件。
解决方案:更改元素声明以使用现有或内置类型,或添加引用的类型。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:com.xxxxx.xxx"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:com.xxxxx.xxx">
<xsd:element name="Stuff_EXT" type="DT_Analyse_EXT"/>
<xsd:complexType name="DT_Analyse_EXT">
<!-- define as appropriate -->
</xsd:complexType>
<xsd:complexType name="Stuff_EXT">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Data Type Response</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="Res">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Loc" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="No" type="xsd:string"/>
<xsd:attribute name="TP" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Results" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="C" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Detail" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="Co" type="xsd:string"/>
<xsd:attribute name="Result" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Date" type="xsd:string"/>
<xsd:attribute name="Result" type="xsd:string"/>
<xsd:attribute name="Rel" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>