文章摘要
XML文档格式应尽可能简单易用,但某些厂商故意设计复杂、冗余的XML模式,以锁定用户并阻碍互操作性。微软365文档格式就是一个典型例子,其复杂的XML模式增加了实现难度,迫使用户依赖特定厂商的技术支持。这种做法违背了XML作为互操作性基础的初衷,成为了一种商业策略。
文章总结
文章《作为锁定工具的故意复杂的XML模式》探讨了XML模式在文档格式中的应用,以及其复杂性如何被用作锁定用户的策略。以下是主要内容总结:
XML模式的作用与复杂性
XML模式定义了XML文档的结构、数据类型和规则,通常通过XML Schema Definition (XSD) 文件实现。理论上,XML和XSD应促进互操作性,但实践中,某些XML模式被故意设计得过于复杂,成为用户和开发者的障碍。故意复杂的XML模式
故意复杂的XML模式远超出显示复杂内容所需的水平,甚至使简单内容(如“To be, or not to be, that is the question”)变得难以解析。其特点包括:- 深度嵌套的标签结构
- 过多的可选或重载元素
- 非直观的命名规则
- 广泛使用扩展点和通配符
- 多命名空间和类型层次结构的导入
- 稀疏或晦涩的文档
微软365文档格式的案例
微软365的XML模式是故意复杂化的典型案例。尽管其文档超过8,000页,但其复杂性使开发者难以实现,从而将用户锁定在微软的生态系统中。锁定策略的比喻
文章用铁路系统比喻锁定策略:虽然轨道对所有人开放,但主要火车制造商通过复杂的控制系统垄断了铁路服务。类似地,微软通过复杂的XML模式和技术垄断,迫使用户接受其产品(如Windows 11和Microsoft 365)。用户与组织的被动接受
多年来,数百万微软用户(包括政府和超国家组织)未对微软的垄断行为提出质疑,导致锁定策略日益复杂和普遍。这种被动接受使微软能够主导市场,用户被迫接受其条款。呼吁简单与清晰
文章最后呼吁开发者和决策者在选择或设计基于XML的系统时,优先考虑简单性和清晰性,因为复杂性会束缚用户,而简单性则能解放他们。

评论总结
评论内容主要围绕XML和OOXML的复杂性及其对开放性和互操作性的影响展开,观点多样且各有侧重。以下是总结:
XML复杂性的批评
- 评论3指出,XML并不自动意味着开放,OOXML的复杂性(如8000页的规范和深度嵌套的标签)使得只有供应商能够实现,排除了第三方实现,导致供应商垄断。
引用:“The result is that only the vendor can feasibly implement it, which eliminates third‑party implementations and lets the vendor dictate terms.” - 评论12认为,微软通过人为的复杂性(如TypeScript和Windows API)来制造锁定,鼓励开发者使用复杂的接口,忽视简单性和向后兼容性。
引用:“Microsoft is using an artificially complex everything as a lock-in tool.”
- 评论3指出,XML并不自动意味着开放,OOXML的复杂性(如8000页的规范和深度嵌套的标签)使得只有供应商能够实现,排除了第三方实现,导致供应商垄断。
复杂性的正当性
- 评论4强调,OOXML的复杂性并非人为添加,而是源于历史、向后兼容性和功能需求的自然结果。
引用:“The complexity is not artificial, it is completely organic and natural.” - 评论13认为,微软选择XML并非因为其优越性,而是因为当时的XML热潮,且其文件格式必须支持Office工具的历史遗留功能。
引用:“They didn’t have the luxury to first come up with a clean file format and then write the tools around it.”
- 评论4强调,OOXML的复杂性并非人为添加,而是源于历史、向后兼容性和功能需求的自然结果。
开放性与互操作性的讨论
- 评论3提到,尽管OOXML是公开的,但其复杂性限制了自由软件开发者只能实现其子集,实际效果与锁定无异。相比之下,OpenDocument更轻量且易于使用。
引用:“For simple document exchange, OpenDocument is significantly leaner and easier to work with.” - 评论14反驳了文件格式导致锁定的观点,指出第三方支持(如Apple的File Exchange)早已存在。
引用:“No one is locked into Office because of file formats.”
- 评论3提到,尽管OOXML是公开的,但其复杂性限制了自由软件开发者只能实现其子集,实际效果与锁定无异。相比之下,OpenDocument更轻量且易于使用。
技术实现与工具
- 评论5建议使用代码生成工具处理复杂的XML模式,认为手动编码XML接口效率低下。
引用:“Using code gen is the best (only) path.” - 评论7提出用AI生成解析器的可能性,但未展开讨论。
引用:“How hard would it be to generate a parser for this spec with AI code gen?”
- 评论5建议使用代码生成工具处理复杂的XML模式,认为手动编码XML接口效率低下。
文件格式的未来与替代方案
- 评论11主张放弃WYSIWYG文档编辑,转向注重内容的格式(如Markdown),以避免供应商锁定。
引用:“Instead of perfect looks, we should focus on the content.” - 评论10呼吁普通人寻求替代方案(如LibreOffice),以打破对复杂格式的依赖。
引用:“It is up to ordinary people to seek alternatives.”
- 评论11主张放弃WYSIWYG文档编辑,转向注重内容的格式(如Markdown),以避免供应商锁定。
总结:评论中对XML和OOXML的复杂性既有批评也有辩护,认为其复杂性既有历史原因,也有供应商锁定的嫌疑。开放性和互操作性是核心争议点,部分评论者提倡使用更简单的格式或工具来避免锁定。