Одновременное «хорошо выполненное» описание комплексного значения элемента и атрибутов этого элемента в XSD - PullRequest
0 голосов
/ 22 февраля 2020

Невозможно правильно объединить два условия в схеме XSD, которые описали бы:

1) Значение элемента complexType с ограничением

2) Последовательность атрибутов элемента

Нет одного of complexType \ simpleType или любые другие конструкции, которые я пытался объединить, не хотят быть "хорошо выполненными".

Что я желал

Внутри одного элемента CHILD:

1) Возможность указать значение элемента (например, ограничение максимальной длины)

2) Возможность описать \ указать атрибуты этого элемента

Что у меня есть?

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ROOT">
    <xs:complexType>
      <xs:sequence>
              <xs:element maxOccurs="unbounded" name="PARENT">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="CHILD"> <!-- extended (complex) description for CHILD's value is needed-->
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="attribute-1" type="xs:boolean" use="required" />
                            <xs:attribute name="attribute-2">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:maxLength value = "64"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="parent-attribute" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="root-attribute" type="xs:unsignedByte" use="required" />
          </xs:complexType>
        </xs:element>
</xs:schema>

вид комплексного ограничения, которое я хотел бы расширить значение CHILD (в качестве примера) (примечание: и сохранить описание его атрибутов также)

              <xs:element name="CHILD" maxOccurs="unbounded">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="4000"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>

1 Ответ

1 голос
/ 23 февраля 2020

Вам нужно сделать это в два этапа: шаг ограничения, чтобы определить дополнительные фасеты для значения, и затем шаг расширения, чтобы разрешить дополнительные атрибуты. (Вы можете сделать два шага в любом порядке).

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