使用Java将XSD转换为树结构

Joh*_*ert 5 java xsd

我想生成XML模式的文档.

我的目标是分析xsd文件并将其显示为树结构(解析所有复杂/匿名类型).此外,我需要用它们的基数(由模式定义)注释该树中的所有项目.

以下小例子可能有助于澄清我的问题.

a)xsd文件:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="client" type="clientType" />
    <xs:complexType name="clientType">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="first_name"/>
            <xs:element name="last_name"/>
            <xs:element name="address" type="addressType" 
                        minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="addressType">
        <xs:sequence>
            <xs:element name="street"/>
            <xs:element name="number" minOccurs="0" maxOccurs="1"/>
            <xs:element name="city"/>
            <xs:element name="zipcode"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

b)输出我想看到:

client [1]
  first_name [1]
  last_name [1]
  address [1..n]
    street [1]
    number [0..1]
    city [1]
    zipcode [1]
Run Code Online (Sandbox Code Playgroud)

有没有人知道这个问题的基于Java的解决方案?最好基于 Eclipse Schema Infoset,但我也很乐意使用其他库.

Chr*_*s R 0

鉴于 XSD 模式也是 XML,您可以将其作为 XML 进行处理,从而为您提供了许多执行此操作的选项。

我的偏好是使用带有模板的 XSLT 样式表来匹配元素和复杂类型元素以获取输出列表,并使用进一步的模板来匹配 minOccurs 和 maxOccurs 属性以获得基数。

执行此操作的样式表示例可能已经在网上提供。