Что ж, согласно учебнику XML-схемы W3 Schools , то, что вы пытаетесь сделать, недопустимо в контексте схемы XML.
Вы можете применить <xs:restriction>
только к <xs:simpleType>
, но не к <xs:simpleContent>
внутри <xs:complexType>
.
A <xs:simpleContent>
может содержать <xs:extension>
для расширения базового типа - но не ограничение.
Таким образом, вопрос на самом деле: что вы пытаетесь достичь здесь ?? Какова цель, как должен выглядеть XML, который вы хотите проверить ??
Марк
ОБНОВЛЕНИЕ:
ОК, чтобы достичь того, чего вы хотите, попробуйте это - определите сложный тип (для того, чтобы иметь атрибут), который содержит простое содержимое (чтобы вы могли иметь строковое значение) и используйте расширение xs: содержание - не хз: ограничение. Таким образом, в основном вы определяете сложный тип, который расширяет содержимое простой строки и добавляет атрибут:
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="isprocessed" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Чтобы сделать это, я просто создал файл «test.xml» с требуемым содержимым, добавил искусственный <root>...</root>
(то есть это действительный XML-документ), а затем запустил Microsoft xsd.exe
инструмент для создания из него схемы XML (вы можете сделать то же самое в Visual Studio 2008, тоже - откройте файл XML и выберите «XML> Создать схему» из меню).
Надеюсь, это поможет!