У меня есть XML-файл, который имеет некоторые значения даты и другие типы данных.
<Purchasedate Name="purcaseDate" value=""/>
Я проверяю эти XML-файлы с xsd файлом. В xsd схеме я записал образец регулярного выражения для dd/mm/yyyy
формат.
Это хорошо работает, если атрибут значения имеет значение. Мой шаблон проверяет против атрибута значения.
Поле (purchasedate
) не обязательно. если значение = "", это означает мой шаблон, проверяет против пустой строки также, которая не обязательна.
Я должен проверить дополнительное поле, и я использую <xs:attribute name="PurchaseDate" use="optional">
также.
Я должен проверить это поле, когда тег значения не пуст.
попробуйте добавить этот атрибут nillable="true" в определение тега xml.
Также вы можете взглянуть на его ссылку http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html
Best Reagds,
Iordan
Это слишком просто...
Просто все, что вам нужно сделать, это включить спецификацию пустой строки в ваш шаблон
Вот как это сделать...
Для справки я написал примеры кусков кода. Просто просмотрите их.
пример 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>