Один из (a, b) должен быть указан в xml! DOCTYPE! ELEMENT - PullRequest
1 голос
/ 12 февраля 2011

Привет всем, Как указать два тега элемента, так что требуется один и только один из тегов?

Спасибо!

1 Ответ

4 голосов
/ 12 февраля 2011

Вы имеете в виду в объявлении элемента в XML DTD?

Следующее объявление означает, что элемент "name" должен иметь ровно один элемент "a" или "b".

<!ELEMENT name (a | b) >

Вот пример примера (с использованием внутреннего подмножества вместо внешнего DTD):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [
<!ELEMENT name (a | b) >
<!ELEMENT a (#PCDATA)>
<!ELEMENT b (#PCDATA)>
]>
<name>
  <a/>
</name>

Примечание: «(a, b)» в названии этого вопроса будет означать ровно одно «a»элемент, за которым следует ровно один элемент "b".

Вот пример схемы на всякий случай:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="name">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="a"/>
        <xs:element ref="b"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="a" type="xs:string"/>
  <xs:element name="b" type="xs:string"/>
</xs:schema>
...