我想創建一個遵循XML架構http://www.oid-info.com/oid.xsd的XML。這個XSD應該在XML文件中以某種方式被引用,以便諸如https://validator.w3.org/的工具可以檢查它以發現數據的語義錯誤,例如,當一個電子郵件地址無效時。如何在XML中引用W3C標記驗證服務的XSD?
首先,我想這樣說:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<oid-database xmlns="http://www.oid-info.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oid-info.com/oid.xsd">
<submitter>
....
</submitter>
<oid>
....
</oid>
</oid-database>
的W3C Markup Validation Service說:
沒有DOCTYPE找到了!僅檢查XML語法。 DOCTYPE聲明 未被識別或丟失。這可能意味着正式的 公共標識符包含拼寫錯誤,或者聲明 未使用正確的語法,或者您的XML文檔未使用DOCTYPE聲明。文檔的驗證已被跳過,並且 對XML語法的格式良好性的簡單檢查已被執行 。
好了,所以我試圖用DOCTYPE
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE oid-database>
<oid-database xmlns="http://www.oid-info.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oid-info.com/oid.xsd">
<submitter>
....
</submitter>
<oid>
....
</oid>
</oid-database>
現在W3C驗證說:
2號線,23欄:沒有內部或外部的文檔類型聲明 子集;將不經驗證解析
我確實知道DTD是什麼,過去我曾與DTD合作過。我知道這裏缺少一個DTD。但我想檢查一個XSD,而不是針對一個DTD。
我該怎麼做才能使它工作?
非常感謝您提供此信息。您使用了哪種工具來驗證此XML?該工具http://www.freeformatter.com/xml-validator-xsd.html確實需要您手動輸入XSD。我希望它可以直接從XML和下載中自動讀取它進一步引用XSD(如xhtml-light.xsd)。 –
我不使用在線驗證器,但[this one](https://devutilsonline.com/xml/validate)似乎滿足您的要求;我使用了基於Xerces-J的脫機驗證器。 – kjhughes