Я пытаюсь написать XML-схему для этого XML-структуры:XML Schema вложенный ребенка в каком-либо элемент
<castle>
<parameters>
<firstParameter>text</firstParameter>
<secondParameter>
<list>
<item>a</item>
<item>b</item>
<item>c</item>
</list>
</secondParameter>
<thirdParameter>
<array>
<item>a</item>
<item>b</item>
<item>c</item>
</array>
</thirdParameter>
<fourthParameter>
<parameters>
<firstParameter>text</firstParameter>
<secondParameter>
<list>
<item>a</item>
<item>b</item>
<item>c</item>
</list>
</secondParameter>
</parameters>
</fourthParameter>
</parameters>
</castle>
Я не знал, как указать элемент с любым именем. Мой фактический XSD выглядит так:
<xs:element name="parameters">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:any processContents="skip" namespace="##targetNamespace"/>
</xs:choice>
</xs:complexType>
</xs:element>
Но он пропускает проверку на уровне вложенных параметров. Вы знаете, как написать это, чтобы быть более конкретным?
Спасибо, я знаю поведение 'processContents'. Я не знаю, как указать элемент с подстановочным именем, содержащим определенное имя элемента (список | массив | словарь | параметры) или простую строку. – trejjam
Мне действительно не нужно проверять XML, но Visual Studio использует этот XSD для цели intelliSense. – trejjam
Возможно, вам не нужно проверять XML, но вам все равно нужно соблюдать правила XSD, касающиеся ограничений, которые могут быть наложены вместе с 'xsd: any', которые я попытался передать в этом ответе. Если вам нужно указать больше структуры, выходящей за рамки обсуждаемых положений, вам нужно избегать 'xsd: any', чтобы получить больше контроля над моделью контента. – kjhughes