2010-05-27 2 views
2

Я пытаюсь создать XSD для элемента, как это:требуется содержание элемента

<ElementType attr1="a" attr2 ="b">mandatory_string</ElementType> 

, и я хочу сделать mandatory_string требуется. Что следует добавить к этому xsd:

<xs:complexType name="ElementType"> 
<xs:simpleContent> 
    <xs:extension base="xs:string"> 
    <xs:attribute name="attr1" type="StringLength1to2" use="required"/> 
    <xs:attribute name="attr2" type="StringLength1to2" use="required"/> 
    </xs:extension> 
</xs:simpleContent> 
</xs:complexType> 

В настоящее время не является обязательной. Чего не хватает?

+0

По неизвестной причине XSD не был скопирован правильно: <хз: имя ComplexType = "ElementType"> \t <хз: simpleContent> \t \t <хз: расширение базы = "хз: строка"> \t \t \t <хз: имя атрибута = тип "attr1" = использование "StringLength1to2" = "требуется" /> \t \t \t <хз: имя атрибута = тип "attr2" = использование "StringLength1to2" = "требуется" /> \t \t \t

+0

Подсказка: строка 'xs: string' может быть пустой строкой. Добавьте ограничение с минимальной длиной. –

+0

Я думал об этом, но есть ли другое решение? Просто для любопытства? :) –

ответ

1

Как уже отмечался в комментарии единственным способом я знаю, является использование «ограничения там есть ограничение„шаблон“:

<xs:simpleType name="orderidtype"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="[0-9]{6}"/> 
    </xs:restriction> 
</xs:simpleType> 

Я не уверен, что это именно то, что вы ищете, хотя. Вам интересно, можете ли вы сделать весь требуемый тег или просто самой строкой? Если только строка вы могли бы просто использовать выражение регулярного выражения в приведенном выше примере.

+0

Таким образом, используя мой и ваш пример он должен выглядеть следующим образом: <хз: имя ComplexType = "ElementType"> <хв: simpleContent> <хз: расширение базы = "orderidtype">< хз: имя атрибута = "attr1" type = "StringLength1to2" use = "required" /> Право? –

+0

я что-то себе больше нравится: <хз: ComplexType> \t <хз: имя элемента = MinOccurs "ElementType" = "1" MaxOccurs = "1"> \t \t <хз: simpleType> \t \t \t < хз: ограничение базы = "хз: строка"> \t \t \t \t <хз: значение MinLength = "1" /> \t \t \t \t <хз: значение MaxLength = "100" /> \t \t \t \t \t \t \t \t <хз: шаблон значение = "\ ш {1-100}" /> \t \t \t \t \t \t \t <хв: атрибут Name = "attR1" тип = использование "StringLength1to2" = "необходимое" /> \t \t <хз: имя = тип атрибут "attr2" = использование "StringLength1to2" = "необходимое" /> \t Это ограничило бы строку от 1 до 100 символов. Вы можете использовать одно из ограничений. –

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