我有一個架構,在這裏我試圖包含/導入沒有名稱空間的另一架構(這不能更改,因爲它來自另一個供應商,它不會更長時間驗證他們的XML)。這是第一個模式:如何將XML架構導入「無命名空間」
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:samp="http://sample/namespace"
targetNamespace="http://sample/namespace"
elementFormDefault="unqualified" attributeFormDefault="unqualified"
xmlns:otr1="http://sample/import/namespace1"
xmlns:otr2="http://sample/import/namespace2">
<xs:import namespace="http://sample/import/namespace1" schemaLocation="other1.xsd" />
<xs:import namespace="http://sample/import/namespace2" schemaLocation="other2.xsd" />
<!-- This one below is having problems, it is valid XML, and I am able to use it
but I am not meeting the actual requirments I have (explained later) -->
<xs:include schemaLocation=="NO_NAME_SPACE_PROBLEM.xsd"/>
...
<xs:element ref="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"/>
...
</xs:schema>
與「NO_NAME_SPACE_SHEMA_PROBLEM.xsd」,可一定程度上改變,但是它不能有命名空間。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xsd:element name="some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA"
type="xsd:string" nillable="true"/>
</xs:schema>
的問題是,some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA
被放入samp
命名空間。因此,當我嘗試將這些信息編碼爲XML時,它會打印出<samp:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA><child-elem/></samp:some-elem-from-NO_NAME_SPACE_PROBLEM_SCHEMA>
,這是一個大問題,因爲XML不會進行驗證,因爲它不是有意義的。所以我的目標是簡單地將元素導入no命名空間命名空間。
更新1:對於混淆,我當時正在使用xs:include,而不是xs:import作爲無名稱空間模式。問題語法已更新。我也使用JiBX codegen生成域對象和JiBX綁定進行編組。所以它也必須是JiBX兼容的。
更新2:根據skaffman的回答,我現在將使用xs:import。我想我會把它分解成一個新問題。
你需要非常清楚'import'和'include'之間的區別,他們做了大不相同的事情。 – skaffman 2010-08-23 18:42:35
是的,我很抱歉,我的意思是早些時候能夠達到這個目標,但是在我能夠回到我的鍵盤之前就被阻止了。 – Zombies 2010-08-23 18:46:17