dtd檔案中寫的引用實體被xml檔案引用後無法在瀏覽器中顯示的問題
阿新 • • 發佈:2018-11-16
解決方案:把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.此時,拉入到瀏覽器中,可以顯示實體引用了。