2013-11-27 5 views
0

У меня проблема, похожая на No matching global declaration available for the validation root, но это не помогает мне в решении моей проблемы при проверке XML. В комментариях от php.net я читал, что дочерние элементы корневого элемента тоже нуждаются в пространстве имен. Я попробовал варианты, но это не решило бы проблему и не изменило бы сообщение. Кто-нибудь знает, что случилось?Не удается проверить с XSD

libxml Version => 2.7.6 
libxml 
libxml2 Version => 2.7.6 
libxslt compiled against libxml Version => 2.7.6 

PHP:

print_r($xml->schemaValidate('customer.xsd')); 

Ошибка:

PHP Warning: DOMDocument::schemaValidate(): 
Element '{http://xxx.de/ecom-customer}customerExport': 
No matching global declaration available for the validation root. 

XML начало:

<?xml version="1.0" encoding="UTF-8"?> 
<xxx:customerExport xmlns:xxx="http://xxx.de/ecom-customer"> 
    <datasource>PROD</datasource> 
... 

XSD частичный:

<?xml version="1.0" encoding="UTF-8"?> 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xxx="http://xxx.de/ecom-customer" 
targetNamespace="http://xxx.de/ecom-customer" 
jxb:version="2.0"> 

<xsd:element name="customerExport" type="xxx:customerExport" 
    xmlns="xxx"> 
    <xsd:annotation> 
     <xsd:appinfo> 
      <jxb:class name="CustomerExportRoot" /> 
     </xsd:appinfo> 
    </xsd:annotation> 
</xsd:element> 
+1

Вы не определили пространство имен http: // xxx/ecom-customer в XSD. – ThW

+0

Благодарим вас за отзыв, собираемся исследовать недостающее пространство имен. – DanFromGermany

ответ

2

Ваш документ схемы должен указывать, что вы объявляете элементы (и другие вещи) для пространства имен http://xxx/ecom-customer. Используйте атрибут targetNamespace на корневом элементе.

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      elementFormDefault="qualified" 
      targetNamespace="..." 
> 

    ... 
    <xs:element name="customerExport">...</xs:element> 
    ... 
</xs:schema> 

Как это, ваша схема объявляет элемент, расширенное имя является {}customerExport, не чье расширенное имя является {http://xxx/ecom-customer}customerExport.

+0

У меня есть обновленный XSD, теперь содержащий «targetNamespace» с именем, аналогичным моему пространству имен в XML, я все равно получаю ту же ошибку. – DanFromGermany

+0

Вот и все, спасибо – DanFromGermany

Смежные вопросы