Схема XML применяет дочерние элементы без применения имени тега - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь создать схему для следующего XML.

<root>
    <allow_any_name id="string">
        <required_tag_1>string</required_tag_1>
        <required_tag_2>string</required_tag_2>
        <required_tag_3>string</required_tag_3>
    </allow_any_name>

    <name1 id="string">
        <required_tag_1>string</required_tag_1>
        <required_tag_2>string</required_tag_2>
        <required_tag_3>string</required_tag_3>
    </name1>

    <name2 id="string">
        <required_tag_1>string</required_tag_1>
        <required_tag_2>string</required_tag_2>
        <required_tag_3>string</required_tag_3>
    </name2>

</root>

Основная проблема заключается в том, что я не могу найти способ указать дочерние элементы с любым указанием имени тега.В приведенном выше XML-коде тегом allow_any_name может быть любое имя.

Я пробовал <xs:any processContents="lax"></xs:any>, который разрешает любое имя тега, но не позволяет указать дочерние.

Я также пыталсяиспользование <xs:any processContents="strict" namespace="##local"></xs:any>, которое применяет дочерние элементы, но означает, что я должен знать все используемые имена тегов (чего я не знаю)

Спасибо

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Это невозможно с XSD 1.0.

В XSD 1.1 это можно сделать с помощью утверждений.

0 голосов
/ 29 марта 2012

Я думаю, что это невозможно с XML-схемой. Я думаю, что вы должны изменить свою структуру с

<allow_any_name id="string">
  <required_tag_1>string</required_tag_1>
  <required_tag_2>string</required_tag_2>
  <required_tag_3>string</required_tag_3>
</allow_any_name>

примерно так:

<fixed_tag_name id="string" name="allow_any_name">
  <required_tag_1>string</required_tag_1>
  <required_tag_2>string</required_tag_2>
  <required_tag_3>string</required_tag_3>
</fixed_tag_name>

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...