在XSD中定义混合内容需使用,允许子元素与字符数据交错;必须明确定义内容模型(如),文本可自由出现在任意位置,但不可嵌套其他mixed类型。

在XSD中定义混合内容,核心是使用 <complextype></complextype> 并显式设置 mixed="true" 属性。这意味着该元素允许子元素和字符数据(文本)交错出现。
混合内容的基本定义方式
混合内容必须通过命名或匿名的 complexType 定义,且不能用 simpleType 或仅含文本的 simpleContent。关键点包括:
-
mixed="true"必须写在<complextype></complextype>开始标签内 - 内容模型(如
<sequence></sequence>、<choice></choice>)仍需明确定义子元素结构 - 文本可出现在任意子元素之间、开头或结尾,无需额外声明
一个典型示例
比如要描述一段可含强调(<em></em>)、链接(<a></a>)和普通文字的段落:
<xs:element name="p">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="em" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="a" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
这样,XML 实例中就可以合法地写成:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
<p>这是一个<em>强调</em>的句子,还带一个<a>链接</a>。</p>
注意事项与常见误区
混合内容看似灵活,但容易因结构不严谨导致验证失败:
- 若未设
mixed="true",即使写了子元素,文本内容也会被拒绝 -
<sequence></sequence>中子元素的顺序和数量约束仍生效,文本不参与顺序校验 - 不能在
mixed="true"的类型中嵌套另一个mixed="true"类型作为子元素(除非子元素本身也独立定义为混合) - 属性可以自由添加,不受
mixed影响,例如:<attribute name="class" type="xs:string"></attribute>
什么时候不该用 mixed="true"
如果元素只含文本+属性(无子元素),应使用 <simplecontent></simplecontent>;如果只含子元素(无文本),直接用 <complextype></complextype> + mixed="false"(默认值)即可。混合内容适用于真正需要“图文穿插”的语义场景,比如 HTML 风格的富文本片段。

















