Чтобы пометить атрибут как обязательный, вы используете <xs:attribute use="required" />
.
Что касается типа, у вас есть выбор встроенных типов XSD (xs: string и т. Д.), Или вы можете определить свой собственный <xs:simpleType />
и использовать его.
UPDATE
Я не уверен, что вы подразумеваете под атрибут должен иметь значение, которое еще не известно . Означает ли это, что значение является строкой, но может быть любой строкой? Или десятичная?
Поскольку это значение атрибута, о котором мы говорим, вы ограничены использованием встроенных типов XSD или определением собственного типа xs:simpleType
на основе одного из встроенных типов. Здесь вы можете применить более строгие правила к разрешенному значению, например, расширив xs:string
и добавив ограничение регулярного выражения к разрешенным значениям.
<xsd:simpleType name="UKDate">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)\d\d"/>
</xsd:restriction>
</xsd:simpleType>
Однако, если нет абсолютно никакого способа узнать, какое значение будет использоваться, у вас есть хорошо известный временный парадокс, согласно которому вы не можете ограничить что-либо во время разработки значением, которое вы знаете только во время выполнения. В этом случае, конечно, нужно только указать, что атрибут должен хотя бы присутствовать?
<xs:attribute use="required" />
Надеюсь, это ответит на ваш вопрос немного яснее.