Я получил следующую схему от клиента. Я сократил его и изменил некоторые имена.
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://mysite.local/bo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Data">
<xs:complexType>
<xs:sequence>
<xs:element name="UUID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern
value="[a-fA-F0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}">
</xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element type="xs:date" name="DOB"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Я построил следующий xml
<?xml version="1.0" encoding="utf-8"?>
<Data xmlns="http://mysite.local/bo">
<UUID>0000f34b-0a01-9604-3400-270461ed42b2</UUID>
<DOB>2019-05-14</DOB>
</Data>
В ColdFusion я звоню <cfset xmlParse( xml, true, fileRead(expandPath("./schema.xsd"), "utf-8"))>
, и выдается исключение с сообщением: cvc-elt.1.a: Cannot find the declaration of element 'Data'.
Adobe ColdFusion и Lucee соглашаются с этой ошибкой.
Я добавил атрибут xmlns
к элементу Data
. Я отправляю этот xml в систему клиента, и он принят и успешно обработан. Интересно, почему ColdFusion выдает исключение. Я думаю, это связано с пространствами имен.