Как указать дочерний элемент в XML-схеме с именем, но с любым содержимым? - PullRequest
2 голосов
/ 19 апреля 2010

Я пытаюсь написать некоторый код схемы XML, чтобы указать, что конкретный элемент 'abc' может иметь дочерний элемент с именем 'xyz', и этот элемент может иметь любые атрибуты и любые дочерние элементы.

На данный момент у меня есть это:

    <xs:element name="abc">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="xyz">
            <xs:complexType>
              <xs:sequence>
                <xs:any/>
              </xs:sequence>
              <xs:anyAttribute/>               
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>

Но когда я проверяю свой XML в соответствии со схемой, я получаю ошибки проверки с жалобами на дочерние элементы элемента xyz.

1 Ответ

1 голос
/ 19 апреля 2010

Ваш xs: any не имеет никакой прикрепленной информации, поэтому он ищет элементы, определенные в схеме. Если вы хотите, чтобы ваша интерпретация подэлементов была слабой, попробуйте следующее:

<xs:element name="abc">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="xyz">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" />
          </xs:sequence>
          <xs:anyAttribute/>               
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Это должно пройти проверку. Если у вас есть любое ожидание правильности содержимого xyz, вы можете включить пространство имен, используя атрибут namespace для xs: any, и использовать эту схему в другой схеме.

Удачи, и я надеюсь, что это поможет!

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