2013-06-20 3 views
0

В XMLSpy существует ошибка проверки, «Значение« 18 »не разрешено для атрибута« name ». Подсказка: допустимым значением будет« NCName ». Место ошибки: xs: schema/xs: element/xs: complexType/хз: выбор/хз: элемент/хз: ComplexType/хз: выбор/хз: элемент/@name»здесь:Почему мой элемент схемы XML не принимает число?

<xs:element name="Age"> 
       <xs:complexType> 
        <xs:choice> 
         <xs:element name="18" type="xs:int"/> 

Если я вхожу письма он проверяет, но мне нужно число в этой области.

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns="http://www.urent.com/Elmhurst" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.urent.com/Elmhurst" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="URent"> 
     <xs:annotation> 

     </xs:annotation> 
     <xs:complexType> 
      <xs:choice> 
       <xs:element name="RentalPeriod"> 
        <xs:complexType> 
         <xs:all> 
          <xs:element name="StartDate" type="xs:date"/> 
          <xs:element name="EndDate" type="xs:date"/> 
         </xs:all> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="Age"> 
       <xs:complexType> 
        <xs:choice> 
         <xs:element name="18" type="xs:int"/> 
         <xs:element name="19" type="xs:int"/> 
         <xs:element name="20" type="xs:int"/> 
         <xs:element name="21" type="xs:int"/> 
         <xs:element name="22" type="xs:int"/> 
         <xs:element name="23" type="xs:int"/> 
         <xs:element name="24" type="xs:int"/> 
         <xs:element name="25+" type="xs:int"/> 
        </xs:choice> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="RateCode"> 
       <xs:complexType> 
        <xs:choice> 
         <xs:element name="Corporate" type="xs:string"/> 
         <xs:element name="Leisure" type="xs:string"/> 
        </xs:choice> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="TypeOfVehicle"> 
       <xs:complexType> 
        <xs:all> 
         <xs:element name="Subcompact" type="xs:string"/> 
         <xs:element name="Compact" type="xs:string"/> 
         <xs:element name="Intermediate" type="xs:string"/> 
         <xs:element name="Standard" type="xs:string"/> 
         <xs:element name="Full Size" type="xs:string"/> 
         <xs:element name="Premium" type="xs:string"/> 
         <xs:element name="Luxury" type="xs:string"/> 
         <xs:element name="Standard Elite SUV" type="xs:string"/> 
         <xs:element name="Intermediate SUV" type="xs:string"/> 
         <xs:element name="Minivan" type="xs:string"/> 
         <xs:element name="Full Size SUV" type="xs:string"/> 
         <xs:element name="Standard SUV" type="xs:string"/> 
         <xs:element name="Premium SUV" type="xs:string"/> 
        </xs:all> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="Residence"> 
       <xs:complexType> 
        <xs:choice> 
         <xs:element name="US" type="xs:string"/> 
         <xs:element name="OutsideUS" type="xs:string"/> 
        </xs:choice> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="SpecialEquipment"> 
       <xs:complexType> 
        <xs:choice> 
         <xs:element name="GPS Navigation" type="xs:string"/> 
         <xs:element name="XM Radio" type="xs:string"/> 
         <xs:element name="Fuel Service" type="xs:string"/> 
         <xs:element name="Child Safety Seats" type="xs:string"/> 
        </xs:choice> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="Customer Info"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="FirstName" type="xs:string"/> 
         <xs:element name="LastName" type="xs:string"/> 
         <xs:element name="EmailAddress" type="xs:string"/> 
         <xs:element name="PhoneNumber" type="xs:string"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:choice> 
    </xs:complexType> 
</xs:element> 

ответ

1

буквально, ваше объявление говорит множество действительных элементов Эйдж включает в себя <Age><18>45</18></Age> и <Age><25+>33</25+></Age>, хотя и не <Age><45>18</45></Age>.

Но «18» и «25 +» не допускаются XML как имена типов элементов; как имена переменных в большинстве языков программирования, имена типов элементов в XML должны начинаться с буквы. (Они также не могут содержать пробелы, поэтому имена элементов «Полный размер» и «Стандартный элитный SUV» также будут вызывать ошибки.) Таким образом, примеры, приведенные в предыдущем абзаце, не являются XML, и вы не можете определить схему XSD против которые они будут действительны.

Неясно, нужно ли вам анализировать основы XML или основы XSD, но ваша работа по разработке схемы будет более приятной и продуктивной, если вы лучше поймете технологии, которые вы пытаетесь использовать; что помогает вам работать с технологией, а не против нее.

+0

@ C. M. Sperberg-McQueer, Спасибо. Я, должно быть, думал о HTML вместо XML, и думал, что могу предложить варианты для раскрывающегося меню «Возраст». – Grafica

+0

Вы можете определенно определить тип, значения которого являются строками «18», «19», ... «25+» или целыми числами от 18 до 25. Вы просто не хотите использовать «18» в качестве имени элемент. –

Смежные вопросы