2012-04-13 11 views
0

鑑於未來XML代碼:XML不會使用xml中的兩(2)個表格進行驗證 - 兩個XML合爲一體?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hotels SYSTEM "travel.dtd"> 
<hotels> 
    <general> 
     <city>MoscowCity</city> 
     <address>Sherman23</address> 
     <phone>423423432423</phone> 
     <hotelDetails> 
      <hotel_code>1</hotel_code> 
      <hotel_rank>3</hotel_rank> 
      <hotel_name>Jacky</hotel_name> 
     </hotelDetails> 
    </general> 
</hotels> 

<!DOCTYPE guests SYSTEM "travel.dtd"> // HERE Validation problem 
<guests> 
    <guest> 
      <id>00000001-0</id> 
      <guestDetails> 
       <name>Jones</name> 
       <city>SomewhereOnlyWeKnow</city> 
       <address>NiceStreet</address> 
       <state>NiceState</state> 
      </guestDetails> 
    </guest> 
</guests> 

而其DTD文件:

<?xml version="1.0" encoding="utf-8"?> 
<!ELEMENT hotels (general+)> 
<!ELEMENT general (city, address, phone, hotelDetails)> 
<!ELEMENT hotelDetails (hotel_code, hotel_rank, hotel_name)> 
<!ELEMENT address (#PCDATA)> 
<!ELEMENT city (#PCDATA)> 
<!ELEMENT hotel_rank (#PCDATA)> 
<!ELEMENT phone (#PCDATA)> 
<!ELEMENT hotel_code (#PCDATA)> 
<!ELEMENT hotel_name (#PCDATA)> 
<!ELEMENT guests (guest+)> 
<!ELEMENT guest (id, guestDetails)> 
<!ELEMENT guestDetails (name, city, address, state)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT state (#PCDATA)> 

文件將不會得到驗證,並且XMLSPY輸出是:

Character 'D' is grammatically unexpected 

任何想法那意味着?

謝謝!

+0

顯然,這意味着你花了兩個XML文件並將其保存爲一個文件,導致無效的XML,有兩個根節點和兩個文檔類型,而只有一個根節點是允許的。 – GSerg 2012-04-13 16:40:51

回答

1

我不認爲你可以在一個XML文檔中有兩個根元素。據我所知,這意味着你的XML格式不正確,因此在第一個根元素的結束標記之後出現錯誤消息。

+0

我被要求只有兩個表的XML文件,因此我不能將它們分成兩個分開的XML。沒有其他辦法可以做到這一點?謝謝 – ron 2012-04-13 16:51:00

+1

我能想到的唯一方法是將這兩個表放到一個新的根元素中,但是當然你必須將其添加到DTD中,使其成爲一個有效的XML文檔。 – TrailOfFire 2012-04-13 16:57:03

+0

好的,請給我舉例說明如何做到這一點? – ron 2012-04-13 16:58:11