2013-03-06 5 views
0

Ну, в короткой версии. Учитель дал нам обзор для теста, в который включена XML-схема (которую мы еще не рассмотрим в классе). Я читаю эту главу, но ее трудно понять, потому что книга дает только фрагменты кода за раз. Итак, я не знаю, как вещи должны быть помещены в более общую картину вещей.Использование XML-схемы для проверки XML-документа

У нас есть XML-документ, который, как это

<enrollment> 
    <semester>1128</semester> 
    <student> 
    <id>1000001</id> 
    <lastname>Smith</lastname> 
    <firstname>Joe</firstname> 
    <courses> 
     <course id="10001"/> 
     <course id="10003"/> 
    </courses> 
    <tuition>200</tuition> 
    </student> 
</enrollment> 

Мы должны создать XML-схемы, которая имеет эти validatons.

  1. может быть от нуля до 10 курсов

  2. обучение должно быть больше нуля и меньше, чем 10000.

  3. создать пользовательский тип с именем CourseType, который проверяет, что атрибут идентификатора курса содержит ровно 5 цифр.

Это мой код схемы XML. Я до сих пор (не уверен, что это правильно). Я очень уверен, что первые два правильны. Я не понимаю третьего.

<xs:schema blah blah blah validation inputs> 
<xs:element name="enrollment"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="courses"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="course" 
      minOccurs="0" 
      maxOccurs="10"/> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="tuition"> 
    <xs:simpleType> 
     <xs:restriction base="xs:integer"> 
     <xs:minInclusive value="0"/> 
     <xs:maxInclusive value="10000"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 

    <xs:element name="Courses"> 
     <xs:complexType name ="Course"> 
     <xs:simpleContent> 
     <xs:extension base ="xs:course ID"> 
      <xs:attribute name="id" type="CourseType"> 
      </xs:attribute> 
     </xs:extension> 
     </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

<xs:simpleType name="CourseType"> 
    <xs:restriction base="xs:integer"> 
    <xs:totalDigits value ="5"/> 
    </xs:restriction> 
</xs:simpleType> 
</xs:schema> 

ответ

0

Пара предложений.

  • Вы говорите, что ограничение на обучение в том, что оно должно быть больше нуля и меньше десяти тысяч. Однако в вашей декларации используются только minInclusive и maxInclusive, которые допускают значения ноль и десять тысяч; вам может потребоваться рассмотреть, будет ли minExclusive и maxExclusive лучше выполнять требования.

  • totalDigits фасет гарантирует, что значение CourseType может быть записана с пятью десятичных цифр или меньше, но это не запрещает значения 1, -12345 или 0000000000001492. Ограничение «содержит ровно 5 цифр» предполагает ограничение на лексическое представление значения. Не могли бы вы получить то, что вам нужно с фасеткой?

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