在XSD

2015-11-04 56 views
1

引用另一個架構時屬性無效我有兩個模式:在XSD

<schema xmlns:foo="urn:x:foo:1.0" xmlns:bar="urn:x:bar:1.0" 
     targetNamespace="urn:x:foo:1.0" 
     version="1.0" 
     xmlns="http://www.w3.org/2001/XMLSchema"> 
    <element name="bar" type="bar:bar" /> 
</schema> 

<schema xmlns:bar="urn:x:bar:1.0" 
     targetNamespace="urn:x:bar:1.0" 
     version="1.0" 
     xmlns="http://www.w3.org/2001/XMLSchema"> 
    <complexType name="bar"> 
     <attribute name="goo" type="string" /> 
    </complexType> 
    <element name="bar" type="bar:bar"/> 
</schema> 

當的IntelliJ 15(EAP)編輯XML,這個XML驗證得好:

<bar goo="xxx" xmlns="urn:x:bar:1.0" /> 

但這找不到屬性goo(而元素欄本身很好):

<bar goo="xxx" xmlns="urn:x:foo:1.0" /> 

我試着將<import namespace="urn:x:bar:1.0"/>添加到foo.xsd但沒有成功。

這是IntelliJ中的錯誤還是我錯過了什麼?你會推薦能夠處理多個XSD文件的任何(最好是在線的)XML驗證器嗎?

回答

0

我發現這可能是bug in IntelliJ,因爲我可以使用xmllint驗證這個(我需要添加<import namespace="urn:x:bar:1.0" schemaLocation="bar.xsd"/>)。

也許一個解決方法可以是定義複雜類型foo:bar來擴展bar:bar - 這種方式對IntelliJ似乎有效。

0

xs:import是必需的。您可以嘗試在xs:import中添加schemaLocation屬性 - 它是可選的,但某些XML處理器沒有用於將名稱空間解析爲模式位置的默認實體解析器。

+0

IntelliJ IDEA內置了映射器。 –