Схема XML для определения минимального набора элементов - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь написать xsd для проверки входных файлов для моей программы.

Может быть, это я, но для этого случая мне кажется странным, что мне нужно определить все элементы, которые могут появиться в xml, так как мне просто нужно подмножество содержащихся данных, и xml можетбыть продлен в будущем. Учитывая, что это мой xml:

    <?xml version="1.0" encoding="utf-8"?>
      <Setup>
         <Foo desc="i don't need you">This is some random Element</Foo>
         <Bar>This is what i need to process</Bar>
         <Bar>And it might appear more than once</Bar>
         <Foobar>Some other random element. There might be more</Foobar>
      </Setup>

Существует ли xsd, действительный до тех пор, пока присутствует <Setup> -> <Bar>, независимо от того, присутствуют ли другие случайные элементы где-либо под <Setup>?

Я думаю, что базовая структура может выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
   <xs:schema>
      <xs:element name="Setup">
         <xs:complexType>
           <xs:someting>
              <xs:element name="bar" type="xs:string" minOccurence="1" maxOccurence="unbounded"/>
              <xsd:any  processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
            </xs:something>
         </xs:complexType>
      </xs:element>
   </xs:schema>

Но <any> просто позволяет добавлять элементы, и я не нашел решения с помощью <choice>, <sequence> или <all> или их комбинация, чтобы обойти это. Есть какой-то трюк, чтобы сделать это?

PS: XSD1.1, к сожалению, не вариант

...