【问题标题】:Create xml schema and verify in c#创建xml模式并在c#中验证
【发布时间】:2019-12-01 07:53:23
【问题描述】:

我是使用 XML 和 XML 模式的新手。

我有以下 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<MainDoc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.unece.org/cefact/namespaces/DocHeader">
  <DocHeader>
    <TypeVersion>5.0</TypeVersion>
    <Dest>
      <Id Auther="zzz">2</Id>
    </Dest>
  </DocHeader>
 </MainDoc>

我已经提到https://www.w3schools.com/xml/schema_complex_text.asp

但这似乎不适用于我的情况(我有多个具有属性的元素),所以任何人都可以告诉我上述 XML 的确切架构是什么?

XML 架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MainDoc">
<xs:complexType>
    <xs:sequence>
    <xs:element name="DocHeader">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="TypeVersion" type="xs:double"/>               
            <xs:element name="Dest" type="xs:string">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Id">
                            <xs:complexType>
                             <xs:simpleContent>
                                  <xs:extension base="xs:integer">
                                   <xs:attribute name="Author" type="xs:string"/>
                                  </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

我尝试用 C# 阅读的代码:

XmlSchemaSet schema = new XmlSchemaSet();
schema.Add("", "PATH_OF_XSD_FILE");

在 C# 中出现错误:

type 属性不能与 simpleType 或 complexType 一起出现。

【问题讨论】:

  • 确切的架构?你能详细说明一下吗?
  • 我已经为上面的 xml 创建了 xsd 文件。但我收到错误消息。“type 属性不能与 simpleType 或 complexType 一起出现。”
  • 所以你正试图在 c# 中创建这个 xsd 文件?
  • 其实我想用xsd文件验证xml文件。检查我为示例 xml 附加的 xsd 文件代码
  • 您将元素 SenderReceiver 指定为 xs:string 类型和 complexType。显然,这些不可能都是真的。

标签: c# xml xsd schema


【解决方案1】:

按照 klaus Gutter 的说法,如果使用复杂类型,则会出现类型,因为我们可以为此使用 base。 检查以下代码:

<xs:element name="Dest">                
                    <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Id">                      
                            <xs:complexType>
                                <xs:simpleContent>
                                  <xs:extension base="xs:string">
                                    <xs:attribute name="Auther" type="xs:string" />
                                  </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 2011-06-02
    • 2010-11-22
    • 2013-05-22
    • 2012-04-15
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多