我正在爲一個工作項目首次使用XML。我覺得我已經掌握了基礎知識,但還有一件事我仍然在撓頭。如果你是using an schema to designate a namespace,XML解析器如何知道在哪裏找到模式文件,以便它可以驗證饋送到它的內容?我從一個層面得到了這一點,唯一重要的是具有全局非唯一名稱的元素與它們唯一的名稱空間相關聯,但解析器不必知道元素標記是否實際上是名稱空間會員?考慮到名稱空間的命名約定通常是一個URL(可能)與所討論的模式沒有任何關係,而不是作爲一個唯一的字符串,那麼到底發生了什麼呢?換句話說,需要驗證XML文件的解析器如何找到與該文件關聯的模式?XML解析器如何知道在哪裏可以找到模式文件?
0
A
回答
1
有許多可能的機制,它取決於您正在使用哪種模式處理器。模式處理有時與XML解析集成,但概念上它是一個獨立的操作,可以獨立完成。
許多人使用但我不太喜歡的一種方法是xsi:schemaLocation屬性,其中XML實例文檔本身定義了從命名空間URI到模式位置的映射。我不喜歡它,因爲如果你正在驗證一個文檔,你不應該相信它足以告訴你什麼模式用於驗證。
大多數架構處理器可能有某種API或命令行界面,允許您提供架構位置。例如,如果你使用撒克遜那麼它的
...Validate -s:source.xml -xsd:schema.xsd
其中schema.xsd是包括/進口所需的任何其他模式文檔的頂層模式文檔。這裏沒有明確的命名空間綁定:Saxon將讀取提供的模式文檔並找出哪些定義適用於哪些命名空間。
相關問題
- 1. Maven2如何知道在哪裏可以找到插件?
- 2. 哪裏可以找到AlertDialog xml文件
- 3. 我在哪裏可以找到msi條件解析器
- 4. tomcat如何知道在哪裏可以找到tnsnames.ora
- 5. 在哪裏可以找到unattend.xml模式
- 6. Ruby如何知道在哪裏可以找到所需的文件?
- 7. Symfony如何知道在哪裏可以找到services.yml配置文件?
- 8. 哪裏可以找到模式模塊
- 9. 我在哪裏可以找到.csproj文件的模式(XSD)?
- 10. 在哪裏可以找到XSLT 1.0的XML模式?
- 11. 我在哪裏可以找到一個DOM解析器?
- 12. 我在哪裏可以找到LinQ解析器
- 13. 我在哪裏可以找到Glade標記語言的XML模式(XSD文件)?
- 14. 在哪裏可以找到log4j.properties文件
- 15. 想知道在哪裏可以找到文檔上無服務器dynamoDB架構
- 16. 有誰知道在哪裏可以找到IronPython的Enthought NumPy二進制文件?
- 17. 我在哪裏可以找到haar cascades xml文件?
- 18. Perl程序如何知道在哪裏可以找到包含它使用的Perl模塊的文件?
- 19. 命令提示符如何知道在哪裏可以找到所需的編譯器/解釋器?
- 20. flex如何知道在哪裏查找.swz文件?
- 21. Java不知道在哪裏可以找到.csv文件,我應該在哪裏放置它?
- 22. 哪裏可以找到jQuery「可滾動」模式窗口插件?
- 23. 哪裏可以找到youtube XML Schema
- 24. 有誰知道我在哪裏可以找到python 2.7的secret_twitter模塊?
- 25. 哪裏可以找到在Eclipse中解析的Boost.Test輸出
- 26. 解析SDK:我可以在哪裏找到版本標識符?
- 27. 有誰知道我在哪裏可以找到iPhone搜索欄樣式?
- 28. 從哪裏可以知道何時創建了pycharm python文件?
- 29. 在哪裏可以找到如何發展(軌道3)助手
- 30. 我在哪裏可以找到組件形式的調試器
neato-burrito!好吧,據我瞭解,XML文件本身可能指向一個模式文件,但這是不可取的。首選的方法是將解析器指向文件位置,以便當它讀取XML文件中的名稱空間標記時,可以將它們與模式文件中的'targetNamespace'標記匹配並驗證。謝謝你爲我清理那個!教程文檔在闡明這種情況的過程中並不是那麼有幫助:-p –