XSD架构中的递归 [英] Recursion in XSD Schemas

查看:136
本文介绍了XSD架构中的递归的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要创建一个递归的XSD架构来验证XML文档的树结构。



示例XML:



I need to create a recursive XSD schema that validates a tree structure of an XML document.

Sample XML:

<?xml version="1.0" encoding="UTF-8"?>
<MooNElements>
  <MooNElement>
    <MooNParameters>
      <MooNParameter/>
      <MooNParameter/>
    </MooNParameters>
    <MooNElement>
      <MooNParameters>
        <MooNParameter/>
        <MooNParameter/>
      </MooNParameters>
    </MooNElement>
    <MooNElement>
      <MooNParameters>
        <MooNParameter/>
        <MooNParameter/>
      </MooNParameters>
    </MooNElement>
  </MooNElement>
  <MooNElement>
    <MooNParameters>
      <MooNParameter/>
      <MooNParameter/>
      <MooNParameter/>
    </MooNParameters>
    <MooNElement>
      <MooNParameters>
        <MooNParameter/>
        <MooNParameter/>
      </MooNParameters>
    </MooNElement>
  </MooNElement>
  <MooNElement>
    <MooNParameters>
      <MooNParameter/>
      <MooNParameter/>
      <MooNParameter/>
    </MooNParameters>
  </MooNElement>
  <MooNElement>
    <MooNElement>
      <MooNParameters>
        <MooNParameter/>
        <MooNParameter/>
      </MooNParameters>
      <MooNElement>
        <MooNParameters>
          <MooNParameter/>
        </MooNParameters>
        <MooNElement>
          <MooNParameters>
            <MooNParameter/>
          </MooNParameters>
        </MooNElement>
      </MooNElement>
    </MooNElement>
  </MooNElement>
</MooNElements>





我使用VS 2010创建了以下XSD



XSD:





I had created the following XSD using VS 2010

XSD:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="MooNElements">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="MooNElement">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="MooNParameters">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="MooNParameter" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element minOccurs="0" maxOccurs="unbounded" name="MooNElement">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="MooNParameters">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="MooNParameter" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="MooNElement">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="MooNParameters">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="MooNParameter" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="MooNElement">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="MooNParameters">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="MooNParameter" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>





如何简化这个以验证递归节点?



谢谢,



Sudheendra



How to simplify this inorder to validate the recursive nodes?

Thanks,

Sudheendra

推荐答案

我建​​议使用 xsd.exe [ ^ ],当你想从xml文件创建xsd时很有用。



如需了解更多信息,请参阅:

如何:使用XML模式定义工具生成类和XML模式文档 [ ^ ]

使用xsd.exe为XML序列化和De生成实体类-Serialization [ ^ ]

从XML到XSD [ ^ ]
I'd suggest to use xsd.exe[^], which is helpful when you want to create xsd from xml file.

For further information, please see:
How to: Use the XML Schema Definition Tool to Generate Classes and XML Schema Documents[^]
Auto generating Entity classes with xsd.exe for XML Serialization and De-Serialization[^]
From XML to XSD[^]


这篇关于XSD架构中的递归的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆