Как проверить тег значения пустой строки в xsd

У меня есть XML-файл, который имеет некоторые значения даты и другие типы данных.

<Purchasedate Name="purcaseDate" value=""/>

Я проверяю эти XML-файлы с xsd файлом. В xsd схеме я записал образец регулярного выражения для dd/mm/yyyy формат.

Это хорошо работает, если атрибут значения имеет значение. Мой шаблон проверяет против атрибута значения.

Поле (purchasedate) не обязательно. если значение = "", это означает мой шаблон, проверяет против пустой строки также, которая не обязательна.

Я должен проверить дополнительное поле, и я использую <xs:attribute name="PurchaseDate" use="optional"> также.

Я должен проверить это поле, когда тег значения не пуст.

6
задан Jakob Möllås 13 January 2017 в 12:01
поделиться

2 ответа

попробуйте добавить этот атрибут nillable="true" в определение тега xml. Также вы можете взглянуть на его ссылку http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html
Best Reagds,
Iordan

0
ответ дан 10 December 2019 в 02:47
поделиться

Это слишком просто...

Просто все, что вам нужно сделать, это включить спецификацию пустой строки в ваш шаблон

Вот как это сделать...

Для справки я написал примеры кусков кода. Просто просмотрите их.

пример XML:

<?xml version="1.0" encoding="utf-8"?>
<xmln xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com XMLFile1.xsd" xmlns="http://www.xsdef.com/xml/123">
  <Purchasedate Name="purcaseDate" value=""/>
</xmln>

пример XSD:(включает пользовательский тип def)

<xs:schema xmlns:xsLocal="http://www.xsdef.com/xml/123" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.xsdef.com/xml/123" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="xmln">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Purchasedate">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="Name" type="xs:string" use="required" />
                <xs:attribute name="value" type="xsLocal:CUSTOM_DATE" use="required" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="CUSTOM_DATE">
    <xs:restriction base="xs:string">
      <xs:pattern value="|((01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)/(01|02|03|04|05|06|07|08|09|10|11|12)/[1-2][0-9][0-9][0-9])"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
9
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

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