2013-12-17 2 views
0

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

Мой XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root-element"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="has-to-be-included1" type="xs:string"/> 
     <xs:element name="has-to-be-included2" type="xs:string"/> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

XML, которые должны быть приняты:

<root-element> 
    <any-element-in-any-quantity/> 
    <has-to-be-included1/> 
    <any-element-in-any-quantity/> 
    <has-to-be-included2/> 
    <any-element-in-any-quantity/> 
</root-element> 

ответ

0

Это несколько возможно через < хз: любой > декларации, но есть ограничения на то, сколько заявленная/незаявленные элементы могут свободно перемешаться.

Заканчивать этот участок грунтовки, с примерами: http://www.w3.org/TR/xmlschema-0/#any

Обратите внимание, что вы можете ограничить или нет, пространства имен «Ун объявленных» элементов с атрибутом "processContents. Например:

<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> 

«слабый» разряжает анализатор от ответственности за проверку XML быть хорошо сформирован. И наоборот, «строгий» требует, чтобы синтаксический анализатор проверял XSD этого элемента, например. (Не обязательно отличная идея):

<xs:any namespace="http://www.w3.org/1999/xhtml" minOccurs="1" maxOccurs="unbounded" 
     processContents="strict"/> 

Кроме того, для имен атрибутов себя, есть сокращенные значения, которые обычно удобно: ## другие, ### целевое пространство, ## местные, #any (по умолчанию) ,

Последнее, в значительной степени то же самое может быть достигнуто «ООН объявленная» атрибуты с:

<xs:anyAttribute /> 

Чтобы вернуться к моей первоначальной комментарий, что есть ограничение в том, как вы смешиваете их, я имел в виду к вашему использованию < xs: all, который имеет ограничения, определенные в http://www.w3.org/TR/xmlschema-0/#groups.

+0

благодарим вас за ответ. К сожалению, его невозможно использовать xs: any в xs: all (я должен использовать xs: все потому, что порядок элементов непредсказуем). –

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