2013-01-17 47 views
0

大部分時間我們在Spring中沒有聲明DOCTYPE。 但我想在我的XML上下文文件中聲明一個DOCTYPE,以便我可以在我的xml文件中使用ENTITY如何在Spring XML文件中使用DOCTYPE

例如:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" 
        "http://www.springframework.org/dtd/spring-beans-2.0.dtd" 
    [<!ENTITY % crmHome SYSTEM "crm-home.dtd"> %crmHome;] 
> 

這給了許多這樣的錯誤......

- Attribute "xmlns" must be declared for element type "beans". 

- Attribute "xmlns:xsi" must be declared for element type "beans". 

    etc..... 

什麼是實現這一目標的方法是什麼?

回答

2

如果您使用模式驗證反正那麼你可以只定義內部DTD子集足以聲明參數實體,而不是指http://www.springframework.org/dtd/spring-beans-2.0.dtd

<!DOCTYPE beans [ 
    <!ENTITY % crmHome SYSTEM "crm-home.dtd"> 
    %crmHome; 
]> 
<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.xsd"> 
+0

有了這個,我得到一個錯誤:元素類型 「豆」 必須申報。 – Mawia

+0

我想你的意思是說我必須填寫我的crm-home.dtd文件中的所有元素和屬性列表。 – Mawia

+0

@Mawia可能有一些配置XML解析器的方法,只能針對模式進行驗證,而不是針對DTD進行驗證,[xerces文檔中有一些示例](http://xerces.apache.org/xerces2-j/ faq-pcfp.html#faq-4),但我不確定如何將其應用於彈簧箱。 –

3

這對我的作品。使用Spring框架V.4.2.1

<?xml version="1.0" encoding="UTF-8"?> 
 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
 
"http://www.springframework.org/dtd/spring-beans.dtd">

相關問題