2010-12-04 140 views
5

我有一個XML模式,如:如何將一個XML文件「包含」到另一個XML文件中?

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="MySchema" 
    targetNamespace="http://tempuri.org/MySchema.xsd" 
    elementFormDefault="qualified" 
    xmlns="http://tempuri.org/MySchema.xsd" 
    xmlns:mstns="http://tempuri.org/MySchema.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="MyDocument"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="TextHeader" type="xs:string" minOccurs="0" /> 
     <xs:element name="TextBody" type="xs:string" minOccurs="0" /> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

有效的XML文檔,根據該模式將是:

<?xml version="1.0" encoding="utf-8" ?> 
<MyDocument xmlns="http://tempuri.org/MySchema.xsd"> 
    <TextHeader>My header which is almost always the same...</TextHeader> 
    <TextBody>My text body which is always different...</TextBody> 
</MyDocument> 

問題1:有沒有辦法「包括」從TextHeader元素另一個文件?

像這樣:

文件 「Header.xml」:

<?xml version="1.0" encoding="utf-8" ?> 
<MyDocument xmlns="http://tempuri.org/MySchema.xsd"> 
    <TextHeader>My Header which is almost always the same...</TextHeader> 
</MyDocument> 

文件 「CompleteDocument.xml」:

<?xml version="1.0" encoding="utf-8" ?> 
<MyDocument xmlns="http://tempuri.org/MySchema.xsd"> 

    include "Header.xml" ??? 

    <TextBody>My text body which is always different...</TextBody> 
</MyDocument> 

問題2:如果這是不可能的, .NET XMLSerializer能夠解析和理解包含這種「包含...」的文檔嗎?

感謝您提前幫忙!

回答

3

否這兩個問題。你可以編寫一些東西(比如app.config如何導入段,或者xslt如何處理包含/導入),但是這不會嵌入到任何XML規範中,也不會與現有模式匹配。基本上你必須自己做所有事情。

如果你真的想走這條路,那麼編寫一個自定義的XmlReader來識別一個特定的元素(在一個特定的xmlns中)並且在那個時候默默合併 - 也許會是節拍的選擇。

+0

我只是在用'XInclude`(http://en.wikipedia.org/wiki/XInclude和http: /www.w3.org/TR/xinclude/),但我沒有得到這個工作。當我引用XInclude命名空間時,'xi:include`元素不被識別(在VS2008中)。我想知道這是否僅僅是W3C「推薦」,這是任何人都沒有實現過的。或者,我是否可以解釋XInclude的目的是錯誤的? – Slauma 2010-12-04 13:12:45

+0

最後,我介紹了我自己的「Include」元素,並處理了整個XML文檔而不使用XmlSerializer。謝謝你的提示! – Slauma 2010-12-05 23:08:57

0

如果您可以修改您的模式,您可能可以使用XML entities

+0

但這只是老式DTD的一個功能,不是在XSD模式中,不是嗎? – Slauma 2010-12-04 13:17:48

相關問題