XML 具有嵌入式 HTML 和验证的架构

XML Schema with embedded HTML and Validation

我有一些 XML 这样的:

<Question id="question1" type="text" required="true">
  <Ask><b>Enter</b>some required text (required)</Ask>
</Question>

<Question id="question2" type="text" required="false">
  <Ask>Enter some text (optional)</Ask>
</Question>

我想允许在 <Ask> 标签内嵌入 html。

所以我在 XSD

中尝试了这个
 <xs:element maxOccurs="unbounded" name="Question">
     <xs:complexType>
        <xs:sequence>
           <xs:element name="Ask">
               <xs:complexType mixed="true">
                   <xs:sequence>
                       <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
           </xs:sequence>               
      </xs:complexType>
 </xs:element>

然而,当 reader 解析它时,它会抛出这个错误:

System.Xml.Schema.XmlSchemaValidationException: The element 'Ask' has invalid child element 'b'. List of possible elements expected: any element in namespace 'http://www.w3.org/2001/XMLSchema'. 
at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(ValidationEventHandler eventHandler, Object sender, XmlSchemaValidationException e, XmlSeverityType severity) 
at System.Xml.Schema.XmlSchemaValidator.ElementValidationError(XmlQualifiedName name, ValidationState context, ValidationEventHandler eventHandler, Object sender, String sourceUri, Int32 lineNo, Int32 linePos, XmlSchemaSet schemaSet) 
at System.Xml.Schema.XmlSchemaValidator.ValidateElementContext(XmlQualifiedName elementName, Boolean& invalidElementInContext) 
at System.Xml.Schema.XmlSchemaValidator.ValidateElement(String localName, String namespaceUri, XmlSchemaInfo schemaInfo, String xsiType, String xsiNil, String xsiSchemaLocation, String xsiNoNamespaceSchemaLocation) 
at System.Xml.XsdValidatingReader.ProcessElementEvent() 
at System.Xml.XsdValidatingReader.ProcessReaderEvent() 
at System.Xml.XsdValidatingReader.Read() 
at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace) 
at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) 
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) 
at System.Xml.XmlDocument.Load(XmlReader reader) 
at CEUManager.Core.Survey.QuestionsFile.LoadXML(String xmlContents) in c:\Users\eric\Documents\Visual Studio 2013\Projects\Conexsys\CEUManager\CEUManager.Core\Survey\QuestionsFile.cs:line 591 
at CEUWebsiteFinal.Part1.OnInit(EventArgs e) in c:\Users\eric\Documents\Visual Studio 2013\Projects\Conexsys\CEUManager\CEUWebsiteFinal\Part1.aspx.cs:line 97

我找到了这个 link,但它似乎不起作用?

XML Schema that allows embedding html

试试这个:

<xs:complexType mixed="true">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:any processContents="lax" />
  </xs:choice>
</xs:complexType>

或者看起来你必须使用 CDATA

<Question id="question1" type="text" required="true">
  <Ask><![CDATA[<b>Enter</b>some required text (required)]]></Ask>
</Question>

哪个可能是更好的选择