使用maxLenth = 1的嵌套元素时,生成示例XML失败

问题描述 投票:2回答:3

我试图从Visual Studio 2012中“生成示例XML”(通过XML架构设计器,内容视图)从下面的XML架构(.xsd),但我收到以下错误

StartIndex不能小于零。参数名称:startIndex

该错误源于对3级嵌套列表中包含的元素的maxLength =“1”限制。

root
  Level 0 List
    Level 1 List
      Level 2 List
        Level 2 Item Element (maxLength=1)

如果我将maxLength更改为2或更大,则错误消失,或者如果我删除列表级别,则错误消失。 (如果我将maxLength = 1项目推送到更深层次列表,则仍会出现错误。)

知道我可能做错了什么吗?我缺少一个架构概念吗?或者,它是否可能是VS 2012的错误?

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Test"
    targetNamespace="http://tempuri.org/Test.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/Test.xsd"
    xmlns:mstns="http://tempuri.org/Test.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="level0List">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="level0Item" type="level0Item" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="level0Item">
    <xs:sequence>
      <xs:element name="level1List">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="level1Item" type="level1Item" maxOccurs="unbounded" />            
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="level1Item">
    <xs:sequence>
      <xs:element name="level2List">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="level2Item" type="level2Item" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="level2Item">
    <xs:sequence>
      <xs:element name="level2Element">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="1" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
xml visual-studio-2012 visual-studio-2013 xsd
3个回答
1
投票

Saxon架构处理器报告此文档没有错误。它看起来很好。


0
投票

我使用VS2010 2012和2015得到了同样的错误。实现了我得到的XSD有以下内容:

<xs:simpleType name="Blank">
    <xs:annotation>
        <xs:documentation>Blank</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="0"/>
    </xs:restriction>
</xs:simpleType>

将maxLength更改为1并排序:)


0
投票

我的XSD似乎是一样的错误。我要改变1到2来解决问题(CTT_POINT_INAPTITURE)。还有VS 2017错误吗?

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="CML_SOQUIJ">
    <xs:complexType>
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:element name="CML_SOQUIJ_TYPE">
          <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
              <xs:element name="CML_SOQUIJ_DOSSIER_TYPE">
                <xs:complexType>
                  <xs:sequence maxOccurs="unbounded">
                    <xs:element name="COUR_MUNICIPALE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="50"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_NO_DOSSIER" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="9"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_NO_CONSTAT" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="10"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="OGN_NOM" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="50"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_DATE_FERMETURE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="TLN_CODE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="5"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="TLN_DESCRIPTION" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="AAT_ETAPE_ACTUELLE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="60"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_STATUT" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="3"/>
                            <xs:enumeration value="ACT"/>
                            <xs:enumeration value="ENT"/>
                            <xs:enumeration value="SUS"/>
                            <xs:enumeration value="FER"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="CAN_DATE_INFRACTION" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="CAN_HEURE_INFRACTION" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="(0[0-9]|1[0-9]|2[0123]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="CTT_POINT_INAPTITURE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>

                    <xs:element name="CTT_VITESSE_CONSTATEE" type="xs:integer" nillable="true" minOccurs="0"/>

                    <xs:element name="CTT_VITESSE_ZONE" type="xs:integer" nillable="true" minOccurs="0"/>
                    <xs:element name="CTT_ENDROIT" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="70"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="DTE_AMENDE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                          <xs:totalDigits value="10"/>
                          <xs:fractionDigits value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_NO_IMMATRICULATION" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="8"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_PVE_IMMAT_CODE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_GENRE_DEFENDEUR" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="3"/>
                            <xs:enumeration value="MON"/>
                            <xs:enumeration value="MME"/>
                            <xs:enumeration value="CIE"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_NOM_DEFENDEUR" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="60"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_PRENOM_DEFENDEUR" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_DATE_NAISSANCE_DEF" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ADR_NO_CIVIQUE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="10"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ADR_ADRESSE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="60"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ADR_VILLE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ADR_PVE_CODE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ADR_CODE_POSTAL" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="10"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ADR_DATE_MAJ" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_PERMIS_CONDUIRE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="15"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_PVE_PERMIS_CODE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="DTE_SOLDE_AMENDE" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                          <xs:totalDigits value="10"/>
                          <xs:fractionDigits value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="DTE_SOLDE_FRAIS" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                          <xs:totalDigits value="10"/>
                          <xs:fractionDigits value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="DTE_SOLDE_DU" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                          <xs:totalDigits value="10"/>
                          <xs:fractionDigits value="2"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_MRV_NOM" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_MVE_NOM" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="30"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="CTT_ANNEE_FAB_VEHICULE" nillable="true" minOccurs="0">
                      <xs:simpleType>
                        <xs:restriction base="xs:integer">
                          <xs:maxInclusive value="9999"/>
                          <xs:minInclusive value="0"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="DATEMAJ" minOccurs="1">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="ACCUSATION" minOccurs="1" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence maxOccurs="unbounded">
                          <xs:element name="CML_SOQUIJ_ACCUSATION_TYPE" minOccurs="1">
                            <xs:complexType>
                              <xs:sequence maxOccurs="unbounded">
                                <xs:element name="CAN_NUMERO" minOccurs="1">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:integer">
                                      <xs:maxInclusive value="9"/>
                                      <xs:minInclusive value="0"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="CAN_ALI_RGT_CODE" minOccurs="1">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="10"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="CAN_ALI_NUMERO" minOccurs="1">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="20"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="CAN_ALI_DESCRIPTION" minOccurs="1">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="50"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="CTT_LIBELLE_INFRACTION" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="2000"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PCE_DATE_PLAIDOYER" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PCE_TYPE_PLAIDOYER" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="1"/>
                                      <xs:enumeration value="C"/>
                                      <xs:enumeration value="N"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="ITT_NOM_PRENOM_AVO" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="120"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="JUM_DATE_JUGEMENT" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="JUM_CJN_IND_CULPABILITE" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="1"/>
                                      <xs:enumeration value="O"/>
                                      <xs:enumeration value="N"/>
                                      <xs:enumeration value="I"/>
                                      <xs:enumeration value=""/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="JUM_CJN_DESCRIPTION" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="60"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PVL_IND_DELIBERE" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="1"/>
                                      <xs:enumeration value="O"/>
                                      <xs:enumeration value="N"/>
                                      <xs:enumeration value="I"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PVL_DATE_DELIBERE" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="DATEMAJ" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AUDITION" minOccurs="0" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence maxOccurs="unbounded">
                          <xs:element name="CML_SOQUIJ_AUDITION_TYPE" minOccurs="0">
                            <xs:complexType>
                              <xs:sequence maxOccurs="unbounded">
                                <xs:element name="ADE_SCE_DATE_SEANCE" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="ADE_SCE_HEURE_SEANCE" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(0[0-9]|1[0-9]|2[0123]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="ADE_SCE_SAE_NO_SALLE" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:integer">
                                      <xs:maxInclusive value="9"/>
                                      <xs:minInclusive value="0"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="ADE_EAE_DESCRIPTION" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="50"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="ADE_SCE_PROCUREUR" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="120"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="ITT_NOM_PRENOM_AVO" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="120"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PVL_IND_PRESENCE_DEF" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="1"/>
                                      <xs:enumeration value="O"/>
                                      <xs:enumeration value="N"/>
                                      <xs:enumeration value="I"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="PVL_IND_PRESENCE_AVO" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:maxLength value="1"/>
                                      <xs:enumeration value="O"/>
                                      <xs:enumeration value="N"/>
                                      <xs:enumeration value="I"/>
                                      <xs:enumeration value="A"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="AUDIDATEMAJ" nillable="true" minOccurs="0">
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:pattern value="(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])"/>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </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>
© www.soinside.com 2019 - 2024. All rights reserved.