Как определить несколько элементов в XML-схеме с тем же именем и другим позволенным значением атрибута?

Используйте ваш метод в UIThread

DispatchQueue.main.async() {
    // your UI update code
}

Это предотвращает замерзание.

8
задан Lukáš Rampa 7 October 2008 в 11:06
поделиться

5 ответов

Вам нужно что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="a">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="day"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="day">
    <xs:complexType>
      <xs:attribute name="name" use="required">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="monday"/>
                <xs:enumeration value="tuesday"/>
                <xs:enumeration value="wednesday"/>
            </xs:restriction>
        </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>
13
ответ дан 5 December 2019 в 07:14
поделиться

Вы рассмотрели что-то вроде этого? (т.е. день является типом, и элементы называют после дней недели),

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="day" />
  <xs:element name="a">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="monday" maxOccurs="1" minOccurs="0" type="day" />
        <xs:element name="tuesday" maxOccurs="1" minOccurs="0" type="day" />
        <xs:element name="wednesday" maxOccurs="1" minOccurs="0" type="day" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
1
ответ дан 5 December 2019 в 07:14
поделиться

Попробуйте это:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="day">
                <xs:complexType>
                    <xs:attribute name="atrib" type="xs:string" use="required" />
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Я думаю, что maxOccurs = "неограниченный" - то, в чем Вы нуждаетесь.

0
ответ дан 5 December 2019 в 07:14
поделиться

Использовать выбор вместо последовательности

Таким образом, u может иметь только один элемент дня в элементе

А для атрибута имени использовать атрибут ref и ссылаться на него с помощью перечисления

0
ответ дан 5 December 2019 в 07:14
поделиться

Чтобы удовлетворить ограничение "не более одного раза", описанное в исходном вопросе, вам необходимо использовать элемент xs: unique в вашей схеме.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

  <xs:element name="a">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="day" maxOccurs="7" minOccurs="1">
          <xs:complexType>
            <xs:attribute name="name" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:pattern value="(mon|tues|wednes|thurs|fri|satur|sun)day"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
          <xs:unique name="eachDayAtMostOnce">
            <xs:selector xpath="day"/>
            <xs:field xpath="@name"/>
          </xs:unique>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>
9
ответ дан 5 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: