如何在XSD中做任何事情?

时间:2014-04-25 03:36:13

标签: xsd

我对XSD有疑问?

在dtd中,我们可以使用any来限制元素类型和标记,如

<!ELEMENT question ANY>
<question>
  <q1>question 1</q1>
</question>

有没有办法在XSD中执行此操作?

1 个答案:

答案 0 :(得分:1)

如果您想在问题中允许任何元素,您可以使用代表任何元素的<xs:any>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="question">
    <xs:complexType>
      <xs:sequence>
        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

属性processContents="skip"用于通知解析器跳过子元素的验证。如果要包含可能验证架构可用的标记(例如XHTML标记),则可能需要使用lax而不是skip。值strict要求最终在您的实例中使用的标记在模式中声明。

如果您还希望允许文本显示在元素之外,例如:

<question>
  <q1>question 1</q1>
  some text
</question>

然后将mixed="true"作为属性添加到<complexType>