2013-04-24 33 views
9

我在Eclipse中有一個PHP項目,其中有很多XML文件。現在,我所有的XML文件驗證失敗,並出現以下錯誤信息:XML/XSD publicId和systemId之間需要空格

White spaces are required between publicId and systemId 

我,四處搜尋,publicId和的systenId似乎涉及到與DOCTYPE開始的XML文件。我的不。另一個SO posting表示將XSD添加到Eclipse中的XML目錄中,但這似乎沒有什麼區別。

一個示例XML如下:

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

<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping 
          http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> 

    <entity name="Doctrine\Tests\Models\CMS\CmsAddress" table="cms_users"> 

     <named-native-queries> 
      <named-native-query name="find-all" result-set-mapping="mapping-find-all"> 
       <query>SELECT id, country, city FROM cms_addresses</query> 
      </named-native-query> 

      <named-native-query name="find-by-id" result-class="CmsAddress"> 
       <query>SELECT * FROM cms_addresses WHERE id = ?</query> 
      </named-native-query> 

      <named-native-query name="count" result-set-mapping="mapping-count"> 
       <query>SELECT COUNT(*) AS count FROM cms_addresses</query> 
      </named-native-query> 
     </named-native-queries> 

     <sql-result-set-mappings> 
      <sql-result-set-mapping name="mapping-find-all"> 
       <entity-result entity-class="CmsAddress"> 
        <field-result name="id" column="id"/> 
        <field-result name="city" column="city"/> 
        <field-result name="country" column="country"/> 
       </entity-result> 
      </sql-result-set-mapping> 

      <sql-result-set-mapping name="mapping-without-fields"> 
       <entity-result entity-class="CmsAddress"/> 
      </sql-result-set-mapping> 

      <sql-result-set-mapping name="mapping-count"> 
       <column-result name="count"/> 
      </sql-result-set-mapping> 
     </sql-result-set-mappings> 

     <id name="id" type="integer" column="id"> 
      <generator strategy="AUTO"/> 
     </id> 

     <field name="country" column="country" type="string" length="50"/> 
     <field name="city" column="city" type="string" length="50"/> 
     <field name="zip" column="zip" type="string" length="50"/> 

     <one-to-one field="user" target-entity="CmsUser" inversed-by="address"> 
      <join-column referenced-column-name="id" /> 
     </one-to-one> 

    </entity> 
</doctrine-mapping> 

我在什麼嘗試下一個有點難倒。我可以禁用XML驗證,但我討厭這樣做來解決Eclipse中的錯誤。如果它有什麼不同,我使用Eclipse 3.7和PDT。失敗的XML文件都是庫的一部分,所以我認爲它必須是必須修改/糾正以解決問題的Eclipse配置細節,但我不知道該怎麼做。

任何建議,我可以嘗試讓我的XML文件驗證?

+1

我不知道這裏有什麼問題,但它與您向我們顯示的XML文件無關。 – 2013-04-24 20:19:32

+0

同意。就像我說的,我相當確信這是一個Eclipse配置問題,但我不知道是什麼。我在沒有它的情況下顯示XML文件b/c,第一個問題(正確)就是XML文件的樣子。鑑於這些是供應商生產的XML文件(以及其中幾個),我相當確信XML文件都是有效的。 – 2013-04-24 20:32:53

+0

請注意,這不是一個有效性問題,而是一個良構問題。在你的鞋子裏,我會看看,如果我能夠識別系統可能會想到的每一個XML文檔,從請求來驗證文檔到你看到的錯誤信息。正在驗證的文檔(如果您演示的示例是典型的,問題不在此處),定義模式的模式文檔(同上),Eclipse的配置文件和Eclipse中的驗證模塊... – 2013-04-24 21:40:24

回答

12

基本上,順序應該是這樣的 - property,然後是property.xsd

xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
+0

應接受此答案... – 2016-05-18 15:53:05

+0

爲我工作。謝謝 !! – Akash5288 2016-10-04 00:26:54

+0

有很多類似的問題..但這個答案解決了我的問題。謝謝。 – pinkpanther 2016-10-05 10:02:03