2013-10-11 43 views
1

我有三個模式:幻燈片,問題和小部件。幻燈片和問題模式導入小部件。但是,幻燈片的名稱空間,問題和小部件是不同的。我定義我的進口類似如下:我可以將XML模式導入另一個模式的目標名稱空間嗎?

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema targetNamespace="http://www.mydomain.com/slideshow" 
     xmlns="http://www.mydomain.com/slideshow" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:wd="http://www.mydomain.com/widgets" 
     elementFormDefault="qualified"> 

    <xs:import namespace="http://www.mydomain.com/widgets" schemaLocation="./widgets-v1.0.xsd"/> 

</xs:schema> 

然而,這需要我用從控件架構元素完全合格的名稱(如WD:someElement)。我真的想將小部件中的定義導入幻燈片和問題命名空間,因此您不必使用wd:someElement來引用someElement。就好像它們是直接在這些模式中定義的一樣。

我試過包括,但這需要小部件是導入文檔的問題和小部件是不同的,因此該選項似乎不起作用的相同名稱空間。

我該怎麼做?

回答

1

要做到這一點的唯一方法是通過所謂的chameleon pattern重複使用XSD內容。這將允許您根據XML名稱空間對您需要的任何組件進行「白色標記」。

+0

這就是我最終做的,我認爲這正是我所要做的。謝謝。 – chubbsondubs

2

如果您希望三個模式文檔中的元素位於不同的名稱空間中,那麼您將不得不使用QNames來引用它們。

當然,您可以更改設計,以便它們不使用不同的命名空間,但是您沒有建議這是您想要執行的操作。

+0

我試過修改設計,因爲我不認爲它會像我描述的那樣工作。你是正確的,它不會改變它不會工作。 – chubbsondubs

相關問題