Как проверить не пустое значение complexType с simpleContent - PullRequest
0 голосов
/ 03 марта 2020

У меня есть XML файл со следующим содержимым:

<farm>
    <propertybag name="name1">Value1</propertybag>
    <propertybag name="name2">Value2</propertybag>
    <propertybag name="name3"></propertybag>
</farm>

Я просто хочу настроить свой XSD-файл, чтобы он не проверял третий элемент name3, так как нет значения.

Вот мой XSD-файл:

<xs:element name="farm" minOccurs="0" maxOccurs="1">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="propertybag" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="name" type="xs:string" use="required" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Я попробовал с обычным:

<xs:restriction base="xs:string">
    <xs:minLength value="1"/>
    <xs:whiteSpace value="collapse"/>
</xs:restriction>

Но это не работает, я пробовал несколько решений, но безуспешно. Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Там, где у вас есть <xs:extension base="xs:string">, вам нужно вместо этого объявить базовый тип как, скажем, base="my:non-empty-string", где non-empty-string определяется как тип, который ограничивает xs:string с помощью minLength="1".

0 голосов
/ 03 марта 2020

Итак, я наконец-то нашел решение, я создал simpleType для проверки атрибута и элемента, чтобы он не был пустым или пробелом:

<xs:element name="farm" minOccurs="0" maxOccurs="1">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="propertybag" type="propertyBag" minOccurs="1" maxOccurs="unbounded">
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>



<xs:simpleType name="propertyValue">
    <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:whiteSpace value="collapse"/>
    </xs:restriction>
</xs:simpleType>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...