我需要对 XML 模式进行非规范化,以便为将创建符合该模式的文档的人员生成文档。用户不了解 XSD,并且很可能永远不会学习。我见过的工具能够为其他 XSD 开发人员生成文档,但我的用户对如何构建架构的细节不感兴趣,他们只想知道他们可以做什么和必须做什么来创建有效的文档。
\n\n因此,我正在寻找一种方法来解析 XML 模式中的所有包含和引用,并生成一个非规范化版本,我可以使用该版本(反过来)生成用户文档。
\n\n我\xc2\xb4已经开始使用 XSLT 来完成其中的一些工作,但是经过验证的工具会有所帮助。我也尝试过 XSD4J,但它显然删除了我生成有用内容所需的所有注释。
\n\n更新:
\n\n我想要的是解析所有引用并使所有定义内联。例如,以下架构:
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\n <xs:element name="AAAA" type="myComplexType"/>\n <xs:complexType name="myComplexType">\n <xs:all>\n <xs:element name="BBBB">\n <xs:complexType>\n <xs:attribute name="cccc" type="mySimpleType"/>\n </xs:complexType>\n </xs:element>\n </xs:all>\n </xs:complexType>\n <xs:simpleType name="mySimpleType">\n <xs:restriction base="xs:string">\n <xs:minLength value="1"/>\n </xs:restriction>\n </xs:simpleType>\n</xs:schema>\nRun Code Online (Sandbox Code Playgroud)\n\n应非规范化为:
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\n <xs:element name="AAAA">\n <xs:complexType>\n <xs:all>\n <xs:element name="BBBB">\n <xs:complexType>\n <xs:attribute name="cccc">\n <xs:simpleType>\n <xs:restriction base="xs:string">\n <xs:minLength value="1"/>\n </xs:restriction>\n </xs:simpleType>\n </xs:attribute>\n </xs:complexType>\n </xs:element>\n </xs:all>\n </xs:complexType>\n </xs:element>\n</xs:schema>\nRun Code Online (Sandbox Code Playgroud)\n\n元素和属性定义的注释也需要在转换后继续存在。
\n这种所需的配置被称为“俄罗斯娃娃”配置。
我不知道有任何工具包含该功能,但另一位读者可能会给出这个已知的术语。
另外,有两个项目可能会有所帮助:
另一方面,许多工具提供了将多个引用的 XSD 合并为一个 XSD 的功能。
请注意,只有xsd:include引用才能合并到包含 XSD 中;xsd:import无法展平,因为 XSD 文件只能有一个目标命名空间。
最后注意事项:请注意当单独的 XSD 使用不同的和值时会出现复杂情况。@elementFormDefault@attributeFormDefault
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |