当前位置: 首页 > 知识库问答 >
问题:

具有XSD验证的XML文档中的节点顺序

朱建弼
2023-03-14

我正在尝试使用XSD使用我的应用程序验证XML文件。问题是我想要一个节点中没有顺序的XML文件。似乎我有两种选择来构建xsd。

>

  • 使用xs: all:在这种情况下,节点没有顺序,但maxOccurs="1"

    使用xs:sequence:在这种情况下,maxOccurs没有限制,而是节点中的顺序

    出现问题的节点示例:导出留置项目onglet\u页面。。。。

        <?xml version="1.0" encoding="UTF-8"?>
    <interface xmlns="http://tempuri.org/Interface.xsd">
      <general>
        <theme>Windows8</theme>
        <photo>standard.png</photo>
        <version>1.1</version>
        <is_combo_interface_enabled>true</is_combo_interface_enabled>
        <appel champ="" tri="ASC" type="" visible="True" />
        <affiche_bloc_questionnaire>true</affiche_bloc_questionnaire>
        <affiche_kit_secours>false</affiche_kit_secours>
        <affiche_check_photos>true</affiche_check_photos>
        <affiche_btn_appel>true</affiche_btn_appel>
        <affiche_btn_auto>true</affiche_btn_auto>
        <affiche_btn_resultats_liste_resultats>true</affiche_btn_resultats_liste_resultats>
        <affichage_boutons_resultats>
          <tabexamen_btn_res_ind>true</tabexamen_btn_res_ind>
          <tabexamen_btn_res_col>true</tabexamen_btn_res_col>
          <tablistres_btn_res_ind>true</tablistres_btn_res_ind>
          <tablistres_btn_res_col>true</tablistres_btn_res_col>
          <tabtest_btn_res_ind>true</tabtest_btn_res_ind>
          <tabtest_btn_res_col>true</tabtest_btn_res_col>
        </affichage_boutons_resultats>
        <affiche_panel_bas>true</affiche_panel_bas>
        <affiche_btn_import>true</affiche_btn_import>
        <affiche_panel_examen>false</affiche_panel_examen>
        <edit_results>true</edit_results>
        <ajout_personne_autorise>true</ajout_personne_autorise>
        <suppression_personne_autorise>true</suppression_personne_autorise>
        <modifier_inscription_autorise>true</modifier_inscription_autorise>
        <signature_electronique>false</signature_electronique>
        <alerte_signature>false</alerte_signature>
        <nb_personnes_max>60</nb_personnes_max>
        <nb_menus>6</nb_menus>
        <nb_liens>4</nb_liens>
        <nb_champs_session>6</nb_champs_session>
        <nb_champs_personne>10</nb_champs_personne>
        <nb_champs_examen_res>0</nb_champs_examen_res>
        <export>
          <export_item num="1" adresse="" login="" password="" zip="true" chiffre="false" showform="true">MDB</export_item>
          <export_item num="2" adresse="" login="" password="" zip="true" chiffre="false" showform="true">XLS</export_item>
        </export>
        <menu>
          <menu_item num="1">
            <menu_action>CREER_SESSION</menu_action>
          </menu_item>
          <menu_item num="2">
            <menu_action>RECHERCHER</menu_action>
          </menu_item>
          <menu_item num="3">
            <menu_action>PARAMETRES</menu_action>
          </menu_item>
        </menu>
        <onglet>
          <onglet_page num="1">
            <onglet_visible>true</onglet_visible>
          </onglet_page>
          <onglet_page num="2">
            <onglet_visible>false</onglet_visible>
          </onglet_page>
        </onglet>
        <default_import_directory></default_import_directory>
        <default_import_file></default_import_file>
        <default_export_directory></default_export_directory>
        <lien>
          <lien_item num="1">
            <text>ASSISTANCE</text>
            <action>1.exe</action>
          </lien_item>
          <lien_item num="2">
            <text>WEB</text>
            <action>2.exe</action>
          </lien_item>
          <lien_item num="3">
            <text>NEWS</text>
            <action>version_contenu.txt</action>
          </lien_item>
          <lien_item num="4">
            <text>AIDE</text>
            <action>Aide\Qui.chm</action>
          </lien_item>
        </lien>
      </general>
      <!-- nom_champ_session = Libellé du label du groupbox session -->
      <session>
        <champ_session num="1">
          <nom_champ_session>LIB_SESSION</nom_champ_session>
          <controle_session num="1">
            <obligatoire_champ_session>true</obligatoire_champ_session>
            <type_controle_session>textbox</type_controle_session>
            <longueur_controle_session>150</longueur_controle_session>
            <donnees_controle_session>texte</donnees_controle_session>
            <propertie_session>Libelle</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
          </controle_session>
        </champ_session>
        <champ_session num="2">
          <nom_champ_session>CHOIX_EXAMEN</nom_champ_session>
          <controle_session num="1">
            <obligatoire_champ_session>false</obligatoire_champ_session>
            <type_controle_session>dropdownlist</type_controle_session>
            <longueur_controle_session>150</longueur_controle_session>
            <donnees_controle_session>texte</donnees_controle_session>
            <propertie_session>cboExamen</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
          </controle_session>
        </champ_session>
        <champ_session num="3">
          <nom_champ_session>LIB_FORMATION</nom_champ_session>
          <controle_session num="1">
            <obligatoire_champ_session>false</obligatoire_champ_session>
            <type_controle_session>textbox</type_controle_session>
            <longueur_controle_session>150</longueur_controle_session>
            <donnees_controle_session>texte</donnees_controle_session>
            <propertie_session>NomFormation</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
          </controle_session>
        </champ_session>
        <champ_session num="4">
          <nom_champ_session>DATES_SESSION</nom_champ_session>
          <controle_session num="1">
            <obligatoire_champ_session>false</obligatoire_champ_session>
            <type_controle_session>datetimepicker</type_controle_session>
            <longueur_controle_session>90</longueur_controle_session>
            <donnees_controle_session>date</donnees_controle_session>
            <propertie_session>DateDebut</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
          </controle_session>
          <controle_session num="2">
            <obligatoire_champ_session>false</obligatoire_champ_session>
            <type_controle_session>datetimepicker</type_controle_session>
            <longueur_controle_session>90</longueur_controle_session>
            <donnees_controle_session>date</donnees_controle_session>
            <propertie_session>DateFin</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
          </controle_session>
        </champ_session>
        <champ_session num="5">
          <nom_champ_session>LIEU_FORMATION</nom_champ_session>
          <controle_session num="1">
            <obligatoire_champ_session>false</obligatoire_champ_session>
            <type_controle_session>dropdown</type_controle_session>
            <longueur_controle_session>150</longueur_controle_session>
            <donnees_controle_session>texte</donnees_controle_session>
            <propertie_session>LieuFormation</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
            <type_datasource_session>BDD</type_datasource_session>
            <valeur_datasource_session>tSession.LieuFormation</valeur_datasource_session>
            <affichage_datasource_session>tSession.LieuFormation</affichage_datasource_session>
          </controle_session>
        </champ_session>
        <champ_session num="6">
          <nom_champ_session>RESPONSABLE_FORMATION</nom_champ_session>
          <controle_session num="1">
            <obligatoire_champ_session>false</obligatoire_champ_session>
            <type_controle_session>dropdown</type_controle_session>
            <longueur_controle_session>150</longueur_controle_session>
            <donnees_controle_session>texte</donnees_controle_session>
            <propertie_session>Formateur</propertie_session>
            <modifiable_champ_session>true</modifiable_champ_session>
            <type_datasource_session>BDD</type_datasource_session>
            <valeur_datasource_session>tSession.Formateur</valeur_datasource_session>
            <affichage_datasource_session>tSession.IdFormateur</affichage_datasource_session>
          </controle_session>
        </champ_session>
      </session>
      <personne>
        <champ_personne num="1">
          <nom_champ_personne>KEY</nom_champ_personne>
          <obligatoire_champ_personne>false</obligatoire_champ_personne>
          <mode_grille_fiche_personne>LES2</mode_grille_fiche_personne>
          <controle_personne>
            <type_controle_personne>textbox</type_controle_personne>
            <longueur_controle_personne>0</longueur_controle_personne>
            <donnees_controle_personne>texte</donnees_controle_personne>
            <propertie_personne>Key</propertie_personne>
            <modifiable_personne>true</modifiable_personne>
          </controle_personne>
        </champ_personne>
        <champ_personne num="2">
          <nom_champ_personne>PRESENCE</nom_champ_personne>
          <obligatoire_champ_personne>false</obligatoire_champ_personne>
          <mode_grille_fiche_personne>grille</mode_grille_fiche_personne>
          <controle_personne>
            <type_controle_personne>checkbox</type_controle_personne>
            <longueur_controle_personne>30</longueur_controle_personne>
            <donnees_controle_personne>texte</donnees_controle_personne>
            <propertie_personne>Present</propertie_personne>
            <modifiable_personne>true</modifiable_personne>
          </controle_personne>
        </champ_personne>
        <champ_personne num="3">
          <nom_champ_personne>PHOTO</nom_champ_personne>
          <obligatoire_champ_personne>false</obligatoire_champ_personne>
          <mode_grille_fiche_personne>FICHE</mode_grille_fiche_personne>
          <controle_personne>
            <type_controle_personne>image</type_controle_personne>
            <longueur_controle_personne>50</longueur_controle_personne>
            <donnees_controle_personne>texte</donnees_controle_personne>
            <propertie_personne>Photo</propertie_personne>
            <modifiable_personne>true</modifiable_personne>
          </controle_personne>
        </champ_personne>
        <champ_personne num="4">
          <nom_champ_personne>NOM</nom_champ_personne>
          <obligatoire_champ_personne>true</obligatoire_champ_personne>
          <mode_grille_fiche_personne>LES2</mode_grille_fiche_personne>
          <controle_personne>
            <type_controle_personne>textbox</type_controle_personne>
            <longueur_controle_personne>100</longueur_controle_personne>
            <donnees_controle_personne>texte</donnees_controle_personne>
            <propertie_personne>Nom</propertie_personne>
            <modifiable_personne>true</modifiable_personne>
          </controle_personne>
        </champ_personne>
      </personne>
        <examen>
            <examen_lib num="1">R372m</examen_lib>
            <examen_lib num="2">R386</examen_lib>
            <examen_lib num="3">R389</examen_lib>
            <examen_lib num="4">R390</examen_lib>
            <examen_lib num="5">LV 22 R389</examen_lib>
            <examen_lib num="6">LV 32 R389</examen_lib>
            <examen_lib num="7">LV 42 R389</examen_lib>
            <examen_lib num="8">LV 14 R386</examen_lib>
            <examen_lib num="9">LV 24 R386</examen_lib>
        </examen>
    </interface>
    

    用于验证上述XML的XSD是:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="interface" targetNamespace="http://tempuri.org/Interface.xsd" xmlns:mstns="http://tempuri.org/Interface.xsd" xmlns="http://tempuri.org/Interface.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
      <xs:element name="interface" msdata:IsDataSet="true" msdata:Locale="en-US">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="general">
              <xs:complexType>
                <xs:all>
                  <xs:element name="theme" type="xs:string" minOccurs="0" />
                  <xs:element name="photo" type="xs:string" minOccurs="0" />
                  <xs:element name="version" type="xs:string" minOccurs="0" />
                  <xs:element name="is_combo_interface_enabled" type="xs:string" minOccurs="0" />
                  <xs:element name="appel" nillable="true" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                             <!-- <xs:extension base="xs:string">-->
                                <xs:attribute name="champ" form="unqualified" type="xs:string" />
                                <xs:attribute name="tri" form="unqualified" type="xs:string" />
                                <xs:attribute name="type" form="unqualified" type="xs:string" />
                                <xs:attribute name="visible" form="unqualified" type="xs:string" />
                              <!--</xs:extension>-->
                          </xs:complexType>
                        </xs:element>
                  <xs:element name="affiche_bloc_questionnaire" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_kit_secours" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_check_photos" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_btn_appel" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_btn_auto" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_btn_resultats_liste_resultats" type="xs:string" minOccurs="0" />
    
                  <xs:element name="affichage_boutons_resultats" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="tabexamen_btn_res_ind" type="xs:string" minOccurs="0" msdata:Ordinal="0"/>
                            <xs:element name="tabexamen_btn_res_col" type="xs:string" minOccurs="0" msdata:Ordinal="1"/>
                            <xs:element name="tablistres_btn_res_ind" type="xs:string" minOccurs="0" msdata:Ordinal="2"/>
                            <xs:element name="tablistres_btn_res_col" type="xs:string" minOccurs="0" msdata:Ordinal="3"/>
                            <xs:element name="tabtest_btn_res_ind" type="xs:string" minOccurs="0" msdata:Ordinal="4"/>
                            <xs:element name="tabtest_btn_res_col" type="xs:string" minOccurs="0" msdata:Ordinal="5"/>
                          </xs:sequence>
                     </xs:complexType>
                   </xs:element>
    
                  <xs:element name="affiche_panel_bas" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_btn_import" type="xs:string" minOccurs="0" />
                  <xs:element name="affiche_panel_examen" type="xs:string" minOccurs="0" />
                  <xs:element name="build" type="xs:string" minOccurs="0" />
                  <xs:element name="edit_results" type="xs:string" minOccurs="0" />
                  <xs:element name="ajout_personne_autorise" type="xs:string" minOccurs="0" />
                  <xs:element name="suppression_personne_autorise" type="xs:string" minOccurs="0" />
                  <xs:element name="modifier_inscription_autorise" type="xs:string" minOccurs="0" />
                  <xs:element name="signature_electronique" type="xs:string" minOccurs="0" />
                  <xs:element name="alerte_signature" type="xs:string" minOccurs="0" />
                  <xs:element name="nb_personnes_max" type="xs:string" minOccurs="0" />
                  <xs:element name="nb_menus" type="xs:string" minOccurs="0" />
                  <xs:element name="nb_liens" type="xs:string" minOccurs="0" />
                  <xs:element name="nb_champs_session" type="xs:string" minOccurs="0" />
                  <xs:element name="nb_champs_personne" type="xs:string" minOccurs="0" />
                  <xs:element name="nb_champs_examen_res" type="xs:string" minOccurs="0" />
                  <xs:element name="export" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                    <xs:sequence>
                        <xs:element name="export_item" nillable="true" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:simpleContent msdata:ColumnName="export_item_Text" msdata:Ordinal="4">
                              <xs:extension base="xs:string">
                                <xs:attribute name="num" form="unqualified" type="xs:string" />
                                <xs:attribute name="adresse" form="unqualified" type="xs:string" />
                                <xs:attribute name="login" form="unqualified" type="xs:string" />
                                <xs:attribute name="password" form="unqualified" type="xs:string" />
                                <xs:attribute name="zip" form="unqualified" type="xs:string" />
                                <xs:attribute name="chiffre" form="unqualified" type="xs:string" />
                                <xs:attribute name="showform" form="unqualified" type="xs:string" />
                                <xs:attribute name="maille" form="unqualified" type="xs:string" />
                                <xs:attribute name="argument1" form="unqualified" type="xs:string" />
                                <xs:attribute name="local_directory" form="unqualified" type="xs:string" />
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="menu" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="menu_item" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="menu_action" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
                            </xs:sequence>
                            <xs:attribute name="num" form="unqualified" type="xs:string" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="onglet" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="onglet_page" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="onglet_visible" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
                            </xs:sequence>
                            <xs:attribute name="num" form="unqualified" type="xs:string" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="import" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="import_item" nillable="true" minOccurs="0" maxOccurs="unbounded" msdata:Ordinal="1">
                          <xs:complexType>
                            <xs:simpleContent msdata:ColumnName="import_item_Text" msdata:Ordinal="2">
                              <xs:extension base="xs:string">
                                <xs:attribute name="num" form="unqualified" type="xs:string" />
                                <xs:attribute name="type" form="unqualified" type="xs:string" />
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="default_import_directory" type="xs:string" minOccurs="0" />
                  <xs:element name="default_import_file" type="xs:string" minOccurs="0" />
                  <xs:element name="default_export_directory" type="xs:string" minOccurs="0" />
                  <xs:element name="lien" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="lien_item" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="text" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
                              <xs:element name="action" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
                            </xs:sequence>
                            <xs:attribute name="num" form="unqualified" type="xs:string" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:all>
              </xs:complexType>
            </xs:element>
            <xs:element name="session">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="champ_session" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="nom_champ_session" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
                        <xs:element name="controle_session" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="obligatoire_champ_session" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
                              <xs:element name="type_controle_session" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
                              <xs:element name="longueur_controle_session" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
                              <xs:element name="donnees_controle_session" type="xs:string" minOccurs="0" msdata:Ordinal="3" />
                              <xs:element name="propertie_session" type="xs:string" minOccurs="0" msdata:Ordinal="4" />
                              <xs:element name="modifiable_champ_session" type="xs:string" minOccurs="0" msdata:Ordinal="5" />
                              <xs:element name="type_datasource_session" type="xs:string" minOccurs="0" msdata:Ordinal="6" />
                              <xs:element name="valeur_datasource_session" type="xs:string" minOccurs="0" msdata:Ordinal="7" />
                              <xs:element name="affichage_datasource_session" type="xs:string" minOccurs="0" msdata:Ordinal="8" />
                            </xs:sequence>
                            <xs:attribute name="num" form="unqualified" type="xs:string" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="num" form="unqualified" type="xs:string" />
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="personne">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="champ_personne" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="nom_champ_personne" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
                        <xs:element name="obligatoire_champ_personne" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
                        <xs:element name="mode_grille_fiche_personne" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
                        <xs:element name="controle_personne" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="type_controle_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="longueur_controle_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="donnees_controle_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="propertie_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="type_datasource_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="valeur_datasource_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="affichage_datasource_personne" type="xs:string" minOccurs="0" />
                              <xs:element name="modifiable_personne" type="xs:string" minOccurs="0" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="num" form="unqualified" type="xs:string" />
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="examen">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="examen_lib" nillable="true" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:simpleContent msdata:ColumnName="examen_lib_Text" msdata:Ordinal="1">
                        <xs:extension base="xs:string">
                          <xs:attribute name="num" form="unqualified" type="xs:string" />
                        </xs:extension>
                      </xs:simpleContent>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
    
        <xs:element name="examen_res">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="champ_examen_res" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="nom_champ_examen_res" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
                        <xs:element name="obligatoire_champ_examen_res" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
                        <xs:element name="controle_examen_res" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="type_controle_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="longueur_controle_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="donnees_controle_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="propertie_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="type_datasource_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="valeur_datasource_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="affichage_datasource_examen_res" type="xs:string" minOccurs="0" />
                              <xs:element name="modifiable_examen_res" type="xs:string" minOccurs="0" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="num" form="unqualified" type="xs:string" />
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
    
    
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    

    你有什么主意吗?

  • 共有3个答案

    景唯
    2023-03-14
        <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
              <!-- XML Schema Generated from XML Document on Mon Jun 01 2015 16:20:21 GMT+0200 -->
              <!-- with XmlGrid.net Free Online Service http://xmlgrid.net -->
           <xs:element name="interface">
                  <xs:complexType>
                         <xs:sequence>
                                <xs:element name="general">
                                       <xs:complexType>
                                              <xs:sequence>
                                                     <xs:element name="theme" type="xs:string"></xs:element>
                                                     <xs:element name="photo" type="xs:string"></xs:element>
                                                     <xs:element name="version" type="xs:double"></xs:element>
                                                     <xs:element name="is_combo_interface_enabled" type="xs:string"></xs:element>
                                                     <xs:element name="appel">
                                                            <xs:complexType>
                                                                   <xs:attribute name="champ" type="xs:string"></xs:attribute>
                                                                   <xs:attribute name="tri" type="xs:string"></xs:attribute>
                                                                   <xs:attribute name="type" type="xs:string"></xs:attribute>
                                                                   <xs:attribute name="visible" type="xs:string"></xs:attribute>
                                                               </xs:complexType>
                                                        </xs:element>
                                                     <xs:element name="affiche_bloc_questionnaire" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_kit_secours" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_check_photos" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_btn_appel" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_btn_auto" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_btn_resultats_liste_resultats" type="xs:string"></xs:element>
                                                     <xs:element name="affichage_boutons_resultats">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="tabexamen_btn_res_ind" type="xs:string"></xs:element>
                                                                          <xs:element name="tabexamen_btn_res_col" type="xs:string"></xs:element>
                                                                          <xs:element name="tablistres_btn_res_ind" type="xs:string"></xs:element>
                                                                          <xs:element name="tablistres_btn_res_col" type="xs:string"></xs:element>
                                                                          <xs:element name="tabtest_btn_res_ind" type="xs:string"></xs:element>
                                                                          <xs:element name="tabtest_btn_res_col" type="xs:string"></xs:element>
                                                                      </xs:sequence>
                                                               </xs:complexType>
                                                        </xs:element>
                                                     <xs:element name="affiche_panel_bas" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_btn_import" type="xs:string"></xs:element>
                                                     <xs:element name="affiche_panel_examen" type="xs:string"></xs:element>
                                                     <xs:element name="edit_results" type="xs:string"></xs:element>
                                                     <xs:element name="ajout_personne_autorise" type="xs:string"></xs:element>
                                                     <xs:element name="suppression_personne_autorise" type="xs:string"></xs:element>
                                                     <xs:element name="modifier_inscription_autorise" type="xs:string"></xs:element>
                                                     <xs:element name="signature_electronique" type="xs:string"></xs:element>
                                                     <xs:element name="alerte_signature" type="xs:string"></xs:element>
                                                     <xs:element name="nb_personnes_max" type="xs:int"></xs:element>
                                                     <xs:element name="nb_menus" type="xs:int"></xs:element>
                                                     <xs:element name="nb_liens" type="xs:int"></xs:element>
                                                     <xs:element name="nb_champs_session" type="xs:int"></xs:element>
                                                     <xs:element name="nb_champs_personne" type="xs:int"></xs:element>
                                                     <xs:element name="nb_champs_examen_res" type="xs:int"></xs:element>
                                                     <xs:element name="export">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="export_item" maxOccurs="unbounded" type="xs:string">
                                                                                 <xs:complexType>
                                                                                        <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                                                        <xs:attribute name="adresse" type="xs:string"></xs:attribute>
                                                                                        <xs:attribute name="login" type="xs:string"></xs:attribute>
                                                                                        <xs:attribute name="password" type="xs:string"></xs:attribute>
                                                                                        <xs:attribute name="zip" type="xs:string"></xs:attribute>
                                                                                        <xs:attribute name="chiffre" type="xs:string"></xs:attribute>
                                                                                        <xs:attribute name="showform" type="xs:string"></xs:attribute>
                                                                                    </xs:complexType>
                                                                             </xs:element>
                                                                      </xs:sequence>
                                                               </xs:complexType>
                                                        </xs:element>
                                                     <xs:element name="menu">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="menu_item" maxOccurs="unbounded">
                                                                                 <xs:complexType>
                                                                                        <xs:sequence>
                                                                                               <xs:element name="menu_action" type="xs:string"></xs:element>
                                                                                           </xs:sequence>
                                                                                        <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                                                    </xs:complexType>
                                                                             </xs:element>
                                                                      </xs:sequence>
                                                               </xs:complexType>
                                                        </xs:element>
                                                     <xs:element name="onglet">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="onglet_page" maxOccurs="unbounded">
                                                                                 <xs:complexType>
                                                                                        <xs:sequence>
                                                                                               <xs:element name="onglet_visible" type="xs:string"></xs:element>
                                                                                           </xs:sequence>
                                                                                        <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                                                    </xs:complexType>
                                                                             </xs:element>
                                                                      </xs:sequence>
                                                               </xs:complexType>
                                                        </xs:element>
                                                     <xs:element name="default_import_directory"></xs:element>
                                                     <xs:element name="default_import_file"></xs:element>
                                                     <xs:element name="default_export_directory"></xs:element>
                                                     <xs:element name="lien">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="lien_item" maxOccurs="unbounded">
                                                                                 <xs:complexType>
                                                                                        <xs:sequence>
                                                                                               <xs:element name="text" type="xs:string"></xs:element>
                                                                                               <xs:element name="action" type="xs:string"></xs:element>
                                                                                           </xs:sequence>
                                                                                        <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                                                    </xs:complexType>
                                                                             </xs:element>
                                                                      </xs:sequence>
                                                               </xs:complexType>
                                                        </xs:element>
                                                 </xs:sequence>
                                          </xs:complexType>
                                   </xs:element>
                                <xs:element name="session">
                                       <xs:complexType>
                                              <xs:sequence>
                                                     <xs:element name="champ_session" maxOccurs="unbounded">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="nom_champ_session" type="xs:string"></xs:element>
                                                                          <xs:element name="controle_session">
                                                                                 <xs:complexType>
                                                                                        <xs:sequence>
                                                                                               <xs:element name="obligatoire_champ_session" type="xs:string"></xs:element>
                                                                                               <xs:element name="type_controle_session" type="xs:string"></xs:element>
                                                                                               <xs:element name="longueur_controle_session" type="xs:int"></xs:element>
                                                                                               <xs:element name="donnees_controle_session" type="xs:string"></xs:element>
                                                                                               <xs:element name="propertie_session" type="xs:string"></xs:element>
                                                                                               <xs:element name="modifiable_champ_session" type="xs:string"></xs:element>
                                                                                           </xs:sequence>
                                                                                        <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                                                    </xs:complexType>
                                                                             </xs:element>
                                                                      </xs:sequence>
                                                                   <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                               </xs:complexType>
                                                        </xs:element>
                                                 </xs:sequence>
                                          </xs:complexType>
                                   </xs:element>
                                <xs:element name="personne">
                                       <xs:complexType>
                                              <xs:sequence>
                                                     <xs:element name="champ_personne" maxOccurs="unbounded">
                                                            <xs:complexType>
                                                                   <xs:sequence>
                                                                          <xs:element name="nom_champ_personne" type="xs:string"></xs:element>
                                                                          <xs:element name="obligatoire_champ_personne" type="xs:string"></xs:element>
                                                                          <xs:element name="mode_grille_fiche_personne" type="xs:string"></xs:element>
                                                                          <xs:element name="controle_personne">
                                                                                 <xs:complexType>
                                                                                        <xs:sequence>
                                                                                               <xs:element name="type_controle_personne" type="xs:string"></xs:element>
                                                                                               <xs:element name="longueur_controle_personne" type="xs:int"></xs:element>
                                                                                               <xs:element name="donnees_controle_personne" type="xs:string"></xs:element>
                                                                                               <xs:element name="propertie_personne" type="xs:string"></xs:element>
                                                                                               <xs:element name="modifiable_personne" type="xs:string"></xs:element>
                                                                                           </xs:sequence>
                                                                                    </xs:complexType>
                                                                             </xs:element>
                                                                      </xs:sequence>
                                                                   <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                               </xs:complexType>
                                                        </xs:element>
                                                 </xs:sequence>
                                          </xs:complexType>
                                   </xs:element>
                                <xs:element name="examen">
                                       <xs:complexType>
                                              <xs:sequence>
                                                     <xs:element name="examen_lib" maxOccurs="unbounded" type="xs:string">
                                                            <xs:complexType>
                                                                   <xs:attribute name="num" type="xs:int"></xs:attribute>
                                                               </xs:complexType>
                                                        </xs:element>
                                                 </xs:sequence>
                                          </xs:complexType>
                                   </xs:element>
                            </xs:sequence>
                         <xs:attribute name="xmlns" type="xs:string"></xs:attribute>
                     </xs:complexType>
              </xs:element>
       </xs:schema>
    

    这是使用http://xmlgrid.net/xml2xsd.html从XML文件生成的XSD

    羊新翰
    2023-03-14

    当您尝试根据XSD验证您的XML时,您将收到Xerces-J提供的以下错误:

    [错误]尝试。xsd:15:21:cos all limited公司。2: “all”模型组中元素的{max occurs}必须为0或1。元素“appel”的值“unbounded”无效。

    这是一条正确的错误消息。如果您希望重复其任何元素,则不能使用xsd: all

    前进的道路是放弃通过xsd:all支持无序元素的需要,而是使用xsd:sequence。虽然对元素施加排序可能看起来不理想,但实际上,有序元素工作良好,可以避免基数问题(如上所述)和唯一粒子属性冲突(通过xsd:choice绕过上述问题时很常见)。

    隆芷阳
    2023-03-14

    如果您只需去掉onglet、lien和export元素上的maxOccurs=“unbounded”,似乎就可以让xs:all正常工作。这些元素不会在示例中重复,即使它们的子元素仍然包含无边界集合。

    此外,为了便于阅读和使用JAXB和xsd等工具生成更清晰的代码。exe,我更喜欢广泛地引用命名的complexType元素。例如:

    <xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://foo.bar"
           xmlns:myprefix="http://foo.bar"
    >
    <!-- ... -->
    
    <xs:complexType name="export">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="export_item">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="num" type="xs:unsignedByte" use="required" />
              <xs:attribute name="adresse" type="xs:string" use="required" />
              <xs:attribute name="login" type="xs:string" use="required" />
              <xs:attribute name="password" type="xs:string" use="required" />
              <xs:attribute name="zip" type="xs:boolean" use="required" />
              <xs:attribute name="chiffre" type="xs:boolean" use="required" />
              <xs:attribute name="showform" type="xs:boolean" use="required" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    </xs:complexType>
    
    <!-- ... -->
    
    <xs:all>
      <!-- ... -->
      <xs:element minOccurs="0" name="relation" type="myprefix:lien"/>
      <xs:element minOccurs="0" name="export" type="myprefix:export"/>
      <!-- ... -->
    </xs:all>
    

    (在生产代码中,我实际上倾向于根本不使用内联xs:complexType,而是从上面重新考虑命名的export\u项目类型。)

     类似资料:
    • 我试图根据内部引用另一个XSD的XSD验证XML(使用include语句)。 作为, 现在,当根据xsd(Schema1.xsd)验证我的XML时,如下所示: 我得到一个错误,“cvc-datatype-valid.1.2.1:'true'不是'boolean'的有效值。” 这是针对schema1.xsd引用的schema2.xsd中定义的元素。 如果我做错了什么,请告诉我。

    • 使用eclipse时,我消除了所有错误,但当我更改xml文档中的元素内容时,超出了中设置的限制。xsd文件没有出现验证错误。我已尝试使用联机验证http://www.freeformatter.com/xml-validator-xsd.html我得到了错误“Cvc elt.1:找不到元素“DatabaseInventory”…行“4”,列“69”的声明”,但在eclipse中它验证得很好。不知道

    • 我有一个在Android中使用API10(2.3.3版本)的项目,我有一个问题是用xsd文件验证xml。这是我的代码: 我的Eclipse模拟器抛出一个异常:E/AndroidRuntime(4770):由:java.lang.IllegalArgumentException引起:http://www.w3.org/2001/XMLSchema 在这一行中:SchemaFactory factor

    • 我无法使用下面的XSD验证XML, XSD数据 我在用XML验证这个XSD时遇到以下错误, cvc复合型。2.4.答:发现以元素“standardHeader”开头的内容无效。应为“{standardHeader}”之一。 如何提供此标签:

    • 我在xsd中有一个问题,我不知道为什么stackoverflow阻止我问。我想有一个看起来像这样的标签 但我还想使用验证来验证这一点。 在xsd中,我有 我可以单独通过语法测试,但当我将验证和xml文件放在一起时,我不断收到错误,说order属性不允许出现在这个标记中。我想使用这个order属性,因为它是必需的。如果有人能告诉我怎么做!非常感谢!

    • 我在验证xml和xsd时遇到问题。我从xsd模式中得到这个错误。 src解决方案。4.2:解析组件“urn:id”时出错。检测到“urn:id”位于命名空间“urn:schemas microsoft com:xml-diffgram-v1”中,但此命名空间中的组件无法从架构文档中引用virtual://server/schema.xsd。如果名称空间不正确,可能需要更改“urn:id”的前缀。如