我寫過一個擴展XmlUrlResolver的類來解析對XML文檔中公共標識符的引用。例如,XML文檔開始時用:如何使用自定義XmlResolver來解析DTD中的公共標識符*?
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE chapter PUBLIC "-//Custom//EN" "custom.dtd">
的公共標識符「 - //自定義/ EN」傳遞給我重寫ResolveUri()
方法的relativeURI
參數,並決定在磁盤上的實際DTD位置。這工作正常。
DTD本身內部存在實體引用時會出現此問題。例如:
<!ENTITY % tablemodel
PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
"soextblx.dtd">
在這種情況下,系統標識符 「soextblx.dtd」 傳遞給ResolveUri()
代替公共標識符 「 - // OASIS // DTD XML交換臺模型19990315 // EN」。
有什麼辦法可以做到這一點?覆蓋GetEntity()
似乎也不起作用,因爲它也傳遞了系統標識符。
你可以在你的課堂上添加代碼嗎? – Cine 2010-04-18 03:41:45