2015-09-03 136 views
0

我有一個xsd文件,簡化如下,引用xhtml.BlkStruct.class的元素。我試過xsd.exe和xsd2code試圖從它生成一個C#類,但我總是得到錯誤。從XSD生成C#類(xhtml.blkstruct.class)

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="http://www.w3.org/1999/xhtml" 
     xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:xhtml="http://www.w3.org/1999/xhtml"> 

    <xs:complexType name="test"> 
     <xs:group ref="xhtml.BlkStruct.class"/> 
    </xs:complexType> 
</xs:schema> 

這是錯誤(引用不宣/沒有宣佈模型組)

Error: Verweis auf eine nicht deklarierte Modellgruppe 'http://www.w3.org/1999/xhtml:xhtml.BlkStruct.class'. 

任何人都可以幫我什麼錯誤嗎?

背景我tryint到XMLSERIALIZE含(簡單)HTML/XML與刺痛內容混合字符串,所以像

 
    &ltp>, &ltdiv>, etc 

例如

 
    Hello &ltu&gtunderlined text</u> &ltb&gtbold text</b> world 

回答

0

好了,你不提供xhtml.BlkStruct.class您的XSD中的任何位置。您可能需要包含其定義才能在代碼生成中取得成功。從http://www.w3.org/MarkUp/SCHEMA/下載文件,並添加

<xs:include schemaLocation="xhtml-basic11-model-1.xsd"> 

但是你真的需要一個強類型的DOM?更簡單的解決方案是將測試字段定義爲字符串,並將HTML包含爲CDATA或編碼的HTML。我的經驗是,將XML與HTML混合總是一個糟糕的設計選擇,並且將HTML部分作爲文本對待會更好。

+0

實際上xhtml.blkstruct.class是在XHTML Basic XML Schema Driver中定義的,請參閱[這裏](http://www.w3.org/TR/xhtml-basic/#a_sdriver)。我如何設法重用這個定義? – nogenius

+0

查看我更新的答案,但您可能需要更多本地文件。 –

+1

這對我不起作用 - 我總是得到xhtml.BlkStruct.class沒有聲明的錯誤...關於如何創建一個C#類用於序列化具有遞歸html屬性的基本集合的文本的任何其他想法( a,div,p,ul,ol,sup)? – nogenius