1. 程式人生 > >dtd檔案中寫的引用實體被xml檔案引用後無法在瀏覽器中顯示的問題

dtd檔案中寫的引用實體被xml檔案引用後無法在瀏覽器中顯示的問題

解決方案:把dtd檔案由被xml檔案外部引用改成被xml檔案內部引用。

例子:

1.xml檔案:

<?xml version="1.0" encoding="UTF-8"?>
<!--檔名:學生資訊管理 -->
<!--關鍵字'SYSTEM'代表.DTD檔案來源於當前系統,而不是來源於網路 -->
<!DOCTYPE 班級 SYSTEM "學生資訊管理.dtd">
<班級>
    <學生 地址="香港" 
         學號="tj1710008" 
         大哥="tj1710009 tj1710008" 
         性別
="男" > <姓名>劉德華</姓名> <年齡>23</年齡> <簡單介紹>學習刻苦! &mycopy;&mycopy;</簡單介紹> </學生> <學生 地址="臺灣" 學號="tj1710009" 大哥="tj1710008 tj1710009" 性別="女" > <姓名>林志玲 &mycopy;</姓名> <
年齡>22</年齡> <簡單介紹>學習刻苦!認真聽講!</簡單介紹> </學生> </班級>

2.對應的dtd約束檔案:

<?xml version="1.0" encoding="UTF-8"?>
<!--檔名:學生資訊管理 -->
<!ELEMENT 班級 (學生+)>
<!ELEMENT 學生 (姓名,年齡,簡單介紹)>
<!--"#REQUIRED"代表屬性值是"必須"的 -->
<!--"地址"這兩個字是屬性名字,是可以自定義的 
--> <!--"ID"代表學號的屬性值惟一,不可重複 --> <!--"DREFS"代表大哥的屬性值是參考其他屬性(學號)的屬性值,DREF加個"S"代表可以有多個參考 --> <!--"(男|女)"代表是列舉,性別的屬性值只能從括號中的值裡面選擇--> <!ATTLIST 學生 地址 CDATA #REQUIRED 學號 ID #REQUIRED 大哥 IDREFS #REQUIRED 性別 (男|女) #REQUIRED > <!--(#PCDATA)代表簡單介紹可以是任何文字 --> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT 年齡 (#PCDATA)> <!ELEMENT 簡單介紹 (#PCDATA)> <!--引用實體在dtd檔案裡面定義,在xml檔案中使用,最好定義在最後面,目的是給一串字串起個別名--> <!ENTITY mycopy "我的公司版權"> <!--此時"我的公司版權"這一個長字串在xml檔案裡面可以用"mycopy"代替,如果需要引用這個長字串的話-->

3.以上的xml檔案在瀏覽器中無法顯示實體引用,下面修改xml檔案:

<?xml version="1.0" encoding="UTF-8"?>
<!--檔名:學生資訊管理_inner_dtd -->
<!--關鍵字'SYSTEM'代表.DTD檔案來源於當前系統,而不是來源於網路 -->
<!DOCTYPE 班級 [
<!ELEMENT 班級 (學生+)>
<!ELEMENT 學生 (姓名,年齡,簡單介紹)>
<!--"#REQUIRED"代表屬性值是"必須"的 -->
<!--"地址"這兩個字是屬性名字,是可以自定義的 -->
<!--"ID"代表學號的屬性值惟一,不可重複 -->
<!--"DREFS"代表大哥的屬性值是參考其他屬性(學號)的屬性值,DREF加個"S"代表可以有多個參考 -->
<!--"(男|女)"代表是列舉,性別的屬性值只能從括號中的值裡面選擇-->
<!ATTLIST 學生 
    地址 CDATA #REQUIRED
    學號 ID #REQUIRED
    大哥 IDREFS #REQUIRED
    性別 (男|女) #REQUIRED
>
<!--(#PCDATA)代表簡單介紹可以是任何文字 -->
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 年齡 (#PCDATA)>
<!ELEMENT 簡單介紹 (#PCDATA)>
<!--引用實體在dtd檔案裡面定義,在xml檔案中使用,最好定義在最後面,目的是給一串字串起個別名-->
<!ENTITY mycopy "我的公司版權">
<!--此時"我的公司版權"這一個長字串在xml檔案裡面可以用"mycopy"代替,如果需要引用這個長字串的話-->
]>
<班級>
    <學生 地址="香港" 
         學號="tj1710008" 
         大哥="tj1710009 tj1710008" 
         性別="男"
    >
        <姓名>劉德華</姓名>
        <年齡>23</年齡>
        <簡單介紹>學習刻苦! &mycopy;   &mycopy;</簡單介紹>
    </學生>
    <學生 地址="臺灣" 
         學號="tj1710009" 
         大哥="tj1710008 tj1710009"
         性別="女"
    >
        <姓名>林志玲 &mycopy;</姓名>
        <年齡>22</年齡>
        <簡單介紹>學習刻苦!認真聽講!</簡單介紹>
    </學生>
</班級>

4.此時,拉入到瀏覽器中,可以顯示實體引用了。