2013-05-21 18 views
16

tôi đã nhận lỗi sauLỗi: "giá trị schemaLocation *** phải có số lượng URI." trên không gian tên trong phối xuân

<Ignored XML validation warning> org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 55; 
SchemaLocation: schemaLocation value = 'http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
http://www.springframework.org/schema/tx' must have even number of URI's. 

và servlet phối của tôi đã có không gian tên sau

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

và tôi thay thế tất cả ở trên bằng cách làm theo

<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

Và tôi lỗi đã biến mất.
Làm thế nào nó xảy ra có thể cho bất kỳ ai biết?

Trả lời

56

Thuộc tính schemaLocation tham chiếu tài liệu Lược đồ XML cho không gian tên.

Về cơ bản khi bạn gõ:

xmlns:expns="http://www.example.com" 
xsi:schemaLocation="http://www.example.com 
        http://www.example.com/schema/example.xsd" 

Bạn đang nói: "Tôi sẽ sử dụng tiền tốexpnscho các yếu tố của namespacehttp://www.example.comNgoài ra, vì vậy bạn có thể xác nhận. các yếu tố đó, tải tệp lược đồ XSD chohttp://www.example.comtronghttp://www.example.com/schema/example.xsd "

Vì vậy, nói cách khác, định dạng là:

xsi:schemaLocation="namespace-a where_to_get_the_xsd_for_namespace-a 
        namespace-b where_to_get_the_xsd_for_namespace-b 
        namespace-c where_to_get_the_xsd_for_namespace-c" 

Và cứ tiếp tục như vậy.

Đó là lý do tại sao số điện thoại phải là số thậm chí.


Thông tin và ví dụ khác có thể được tìm thấy here.

+0

Vậy làm cách nào để khắc phục sự cố này? Bạn chỉ cần loại bỏ 'xsi: schemaLocation' không được định dạng chính xác vì nó không thực sự đang làm gì? Bạn có tìm ra không gian tên nên là gì? Nếu vậy, làm thế nào? –

+0

@StephenOstermiller Bạn có thể sửa (thêm đối tác vào) mục nhập trong 'xsi: schemaLocation' mà làm cho nó không đồng đều, hoặc, nếu bạn không biết giá trị chính xác cho conterpart, hãy xóa mục nhập (vì vậy không cần để xóa toàn bộ 'xsi: schemaLocation', mặc dù điều đó cũng sẽ hoạt động, tôi đoán). – acdcjunior

Các vấn đề liên quan