2012-09-12 106 views
1

我會通與...XSI:的schemaLocation和pom.xml的

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
  1. 爲什麼我需要使用XSI開始看到maven pom.xml:這裏的schemaLocation?我瞭解它是一種發現具有目標名稱空間的XSD的方法,但是當我使用xmlns =「http://www.w3.org/2001/XMLSchema」我不需要提及schemaLocation?

  2. 當我嘗試用別的東西(如xsitest)重寫前綴xsi時,它顯示它無效。它是一個應該使用的標準前綴關鍵字嗎?我認爲前綴可以是任何東西。

回答

1

您問「爲什麼我需要使用xsi:schemaLocation ...?」

是嗎?無論您是否需要使用xsi:schemaLocation,都取決於您使用的驗證程序和其他架構感知處理器:xsi:schemaLocation是將名稱空間綁定到特定架構的一種方式,但並非唯一方法。

如果您更改XSI命名空間綁定到的前綴,那麼您希望文檔應該保持有效。如果您的軟件顯示錯誤,那麼軟件中可能存在錯誤,或者您沒有正確重新綁定前綴。

+0

所以對於xmlns =「http://www.w3.org/2001/XMLSchema」我不使用xsi:schemaLocation,我怎麼知道哪個驗證器/架構感知處理器正在發現xsd? –

+0

我不認爲我理解你的問題。這聽起來好像你在尋求幫助來找出你正在運行的軟件,但我很難想象如何做到這一點。要麼調用模式驗證程序,在這種情況下,您應該查閱其文檔。或者你正在調用其他一些軟件,它主動調用一個驗證器,在這種情況下我會再看文檔。您不需要使用xsi:schemaLocation來指定XSD名稱空間的模式位置,因爲所有符合標準的XSD處理器都知道該名稱空間是內置的。 –

+0

我只是想知道爲什麼我們必須在我們的許多XSD中指定xsi:schemaLocation項目使其更加冗長。我也不知道XML模式驗證器如何將模式綁定到名稱空間。 –