XML的“混合内容”是什么 怎么用DTD或XSD定义


XML混合内容指元素同时包含文本和子元素,DTD中用(#PCDATA|e1|e2)*声明且#PCDATA须居首、不可重复,XSD则通过mixed="true"实现并支持精细约束;适用于富文本,慎用于数据交换。

XML的“混合内容”指一个元素既包含文本(字符数据),又包含子元素。比如:

这是一个强调的段落。

——p元素里既有普通文字,又有em标签。这种结构在HTML中很常见,但在XML中需要显式声明才被允许。

DTD中定义混合内容

DTD用mixed content model语法,核心是(#PCDATA | element1 | element2)*这种写法。关键点:

  • #PCDATA必须放在括号内最前面,且只能出现一次
  • 所有允许的子元素名要并列列出,用|分隔
  • 结尾必须加*(表示可重复任意次,包括0次)
  • 不能指定子元素顺序,也不能限制出现次数(如+?不适用)

示例:


这样就允许p内穿插文本、emstrongbr,顺序和数量都不限。

XSD中定义混合内容

XSD通过mixed="true"属性启用混合内容,比DTD更清晰可控:

  • 上设置mixed="true"
  • 子元素仍用等定义结构
  • 支持数据类型、最小/最大出现次数、命名空间等完整约束
  • 文本内容会作为xs:string类型的值,与子元素共存于同一层级

示例:









这个定义允许p中任意位置出现文本、embr,还能为em指定内容类型。

什么时候该用混合内容

不是所有场景都适合混合内容:

  • 适合富文本、段落、标题等自然语言类结构
  • 避免用于纯数据交换格式(如订单、配置项),容易导致解析歧义
  • DTD中混合内容无法限制文本位置或子元素频次,XSD更稳妥
  • 若只需“文本+最多一个标签”,建议拆成两个独立元素,逻辑更清晰

基本上就这些。混合内容本质是放宽结构限制,用之前想清楚:你真需要这种灵活性,还是只是没设计好元素边界?


# html  # string类  # 数据类型  # String  # 命名空间  # xml  # 数据交换  # 更清晰  # 自然语言  # 放在  # 最多  # 什么时候  # 又有  # 只需  # 但在  # 这是一个 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: 如何使用Golang log设置日志输出格式_Golang log日志格式示例  Win10怎么卸载鲁大师_Win10彻底卸载鲁大师方法【步骤】  Win11怎么制作U盘启动盘_Win11原版系统安装盘制作【详解】  如何在 Python 中将 ISO 8601 时间戳转换为日期并计算日期差值  Win10电脑怎么设置网络名称_Windows10注册表NetworkList修改  Python脚本参数接收_sys与argparse解析【指导】  Python迭代器生成器进阶教程_节省内存与懒加载实战  静态属性修改会影响所有实例吗_php作用域操作符下静态存储【教程】  如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类  如何优化Golang内存分配与GC调度_Golang垃圾回收优化示例  php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】  Windows 10怎么录屏_Windows 10使用Xbox Game Bar录制屏幕视频教程  Windows如何拦截腾讯视频广告_Windows拦截腾讯视频广告方法【方法】  如何使用Golang反射将map转换为struct_Golang reflect类型映射技巧  MAC怎么使用表情符号面板_MAC Emoji快捷键调用与符号查找【方法】  用lighttpd能运行php吗_lighttpd配置php步骤【教程】  如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例  如何使用Golang搭建Web开发环境_快速启动HTTP服务  Windows10系统怎么查看IP地址_Win10网络连接状态详细信息  Win11怎么关闭系统透明度_Windows11个性化颜色透明效果  如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践  Win11怎么关闭系统提示音_Windows11声音方案设为无声教程  如何外贸网站设计-能留住客户提升用户体验!  如何使用Golang安装依赖库_管理模块和第三方包  c++如何使用std::bitset进行位图算法_c++ 快速查找与大规模数据排重【方法】  C++如何使用std::transform批量处理容器元素?(代码示例)  Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】  如何正确访问 Laravel 模型或对象的属性而非调用不存在的方法  Python 模块的 __name__ 属性如何由导入方式决定?  Win11文件扩展名怎么显示 Win11查看文件后缀名设置【步骤】  Python文件管理规范_工程实践说明【指导】  Win10怎么关闭自动更新错误重启 Win10策略禁止失败补丁强制重启【防护】  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  c++ namespace命名空间用法_c++避免命名冲突  Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】  Windows蓝屏错误0x0000001E怎么修复_KMODEEXCEPTIONNOTHANDLED排查  Go 中 := 短变量声明的类型推导机制详解  Win10系统怎么查看网络连接状态_Windows10网络和共享中心  如何在 Python 测试中动态配置 @backoff 装饰器的重试次数  Win11怎么更改任务栏位置_修改注册表将Win11任务栏置顶【教程】  windows 10应用商店区域怎么改_windows 10微软商店切换地区方法  海外搜索引擎推广效果怎么样,怎么分析效果!  如何在Golang中使用replace替换模块_指定本地或远程路径  c++中如何使用auto关键字_c++11类型推导用法说明  Win11麦克风没声音怎么设置_Win11麦克风权限及驱动修复【教程】  如何在Golang中实现自定义Benchmark_Golang testing.B自定义性能测量示例  php中常量能用::访问吗_类常量与作用域操作符使用场景【汇总】  Win10怎么卸载金山毒霸_Win10彻底卸载金山毒霸方法【步骤】  C++如何编写函数模板?(泛型编程入门)  Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】 

 2026-01-02

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.