我有一个包含一些html的xml文档。
<begin-line>
<verse-num>6</verse-num>a mixed people<footnote id="f2">
Or <i>a foreign people</i>; Hebrew <i>a bastard</i>
</footnote> shall dwell in Ashdod,
</begin-line>
verse-num元素是我唯一没有验证过的元素,其余的我想要知道一个字符串类型的大组,它可以包含html,有时还有一些xml(如脚注)。
这是我现在拥有的架构,它没有做到这一点。
<xs:element maxOccurs="unbounded" name="begin-line">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0">
<xs:choice maxOccurs="unbounded">
<xs:element name="verse-num">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="begin-chapter" type="xs:unsignedByte" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="class" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
我正在使用XSD.exe生成一个类,我可以将此垃圾反序列化为。
它正在生成一个在其下面带有verse-num类型的开始行对象,还有一个文本数组,它们被内部的html / xml标记分割。
我需要的是一个xsd,可以被XSD.exe用来生成一个开头行类,它将给我一个verse-num类型,然后一个字符串属性将包含其余内容(包括文本) ,我是,b,脚注,xml / html)。
我做了一些研究,似乎processContents会做的伎俩,但我无法弄清楚把它放在哪里。
当谈到它时,我想对这个XSD.exe创建的对象进行编程。
var beginLine = new crosswaybiblePassageVerseunitBeginline();
Console.WriteLine((beginLine.Items[0] as crosswaybiblePassageVerseunitBeginlineVersenum).Value);
Console.Write(beginLine.Text);
或者甚至......
var beginLine = new crosswaybiblePassageVerseunitBeginline();
Console.WriteLine(beginLine.Versenum.Value);
Console.Write(beginLine.Text);
答案 0 :(得分:1)
我不确定如何设置架构以便它可以提供来自XSD.exe的良好输出,但您可以使用具有以下定义的类型在输出中指定“任意数量的具有任何名称的元素”: p>
<xs:complexType name="AnyChildren">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" namespace="##any"/>
</xs:sequence>
<xs:anyAttribute />
</xs:complexType>
例如验证:
<Module>
<Title>Hello World</Title>
<ProviderType>xyz</ProviderType>
<Content />
<MoreContent />
</Module>
您可以使用:
<xs:complexType name="Module">
<xs:sequence>
<xs:element name="Title" type="xs:string" maxOccurs="1" />
<xs:element name="ProviderType" type="xs:string" minOccurs="1" nillable="false" />
<xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##any"/>
</xs:sequence>
<xs:anyAttribute />
</xs:complexType>