2013-01-09 3 views
2

Я уже возился с проверкой XML через xsd, но я все еще новичок. Я пытаюсь проверить этот xml, и он вызывает эту ошибку: cvc-elt.1: Не удается найти объявление элемента «клиенты». [5]XSD Проверка XML: не удается найти декларацию элемента

<?xml version="1.0"?> 

<customers xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://w3schools.com requested_customer.xsd"> 

<customer name="Vladimir Putin" address="St. Petersburg, wadim street 23, Russia"/> 
</customers> 

и XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <xs:element name="customers"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="customer"> 
      <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:string"> 
       <xs:attribute type="xs:string" name="name"/> 
       <xs:attribute type="xs:string" name="address"/> 
       </xs:extension> 
      </xs:simpleContent> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Спасибо за вашу помощь!

+0

Можете ли вы разместить содержимое XSD? –

+0

Здесь вы идете! Это может быть из XSD? – Js30

+0

xsi: schemaLocation = "WRONG NAMESPACE requested_customers.xsd" - ваша схема должна иметь атрибут targetNamespace. Значение этого целевого пространства имен должно быть тем, что вы используете в значении schemaLocation. –

ответ

4

Прежде всего, ваш XML не использует пространства имен XML для своего содержимого, поэтому для ссылки на местоположение файла XSD без целевого пространства имен вы должны использовать атрибут xsi:noNamespaceSchemaLocation.

Во-вторых, вы должны убедиться, что местоположение файла XSD известно и поддерживается программой проверки.

Ваша комбинация XML/XSD отлично подходит.

+0

Здравствуйте, меня попросили выполнить курсовую работу с XML, у которого есть пространство имен, и мне нужно определить его. Это просто сделать? Спасибо!! – Js30

+0

Также см. Эту страницу [W3Schools] (http://www.w3schools.com/schema/schema_example.asp) для получения дополнительной информации о 'xsi: noNamespaceSchemaLocation'. – DavidRR

+1

@ user1959493, его можно легко запустить. Предположим, вы хотите добавить пространство имен 'urn: tempuri-org' к тому, что вы сделали до сих пор. Все, что вам нужно сделать, это i) добавить атрибуты targetNamespace = "urn: tempuri-org" xmlns = "urn: tempuri-org" в ваш XSD-файл, xs: элемент схемы, ii) добавить xmlns = "urn: tempuri-org" атрибут элемента 'customers' и iii) заменить' http: // w3schools.com' на 'urn: tempuri-org' в значении атрибута xsi: schemaLocation. Теперь пространства имен могут оказаться запутанными, и если у вас возникла ошибка, я бы рекомендовал потратить немного времени на чтение некоторых статей пространства имен XML ... –

1

Кроме того, если ваша цель состоит, чтобы позволить более одного customer в customers, вы хотите изменить:

<xs:element name="customer"> 

To:

<xs:element name="customer" maxOccurs="unbounded"> 

Конечно, maxOccurs может также быть конечное значение, такое как 100. maxOccursminOccurs) оба по умолчанию - 1 (See). minOccurs также может быть 0.

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