xmlParse throws Не удается найти объявление элемента после предоставления пространства имен - PullRequest
3 голосов
/ 23 апреля 2019

Я получил следующую схему от клиента. Я сократил его и изменил некоторые имена.

<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 выдает исключение. Я думаю, это связано с пространствами имен.

...