#xml #xsd
#xml #xsd
Вопрос:
У меня есть следующая часть в моем XSD:
<xs:element name="Parameter">
<xs:complexType mixed="true">
<xs:attribute name="Name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
это означает, что значение параметра может быть любым string
. Могу ли я как-то указать, что значение параметра может быть любым допустимым, xml
подобным <aaa></aaa>
? Что-то вроде type="xs:xml"
Ответ №1:
Используйте <xs:any>
, чтобы разрешить любые XML-элементы в вашей модели контента.
<xs:element name="Parameter">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Вы можете ограничить элементы, разрешенные <xs:any>
определенными пространствами имен, с помощью namespace
атрибута и управлять их проверкой с помощью processContents
атрибута. Чтобы разрешить любой атрибут, используйте <xs:anyAttribute>
Дополнительная информация в рекомендации по схеме XML: 3.10.2 XML-представление компонентов схемы с подстановочными знаками
Комментарии:
1. Параметр по-прежнему может иметь значение «dfdf», я хочу иметь только допустимый xml для значения
2. @ Dominating С кодом, который у меня был в моем ответе, он не может содержать только текстовое содержимое. Вы уверены, что ваш код соответствует моему примеру? У вас все еще есть этот
mixed="true" attribute in your
элемент <complexType>`? Потому что, если он у вас есть, тогда также разрешено только текстовое содержимое.
Ответ №2:
Вам придется использовать
<xs:element name="Parameter" type="myType>
где
<complexType name="myType>
<choice>
<element "myXml" type="xml">
<element "myStr" type="xs:sting">
</choice>
</complexType>
и вам нужно будет определить xml как шаблон xml, который вы хотите использовать в качестве своего значения.