2011-07-12 35 views
5

Tôi muốn tạo tài liệu cho các lược đồ XML.Chuyển đổi XSD thành cấu trúc cây bằng Java

Mục tiêu của tôi là phân tích tệp xsd và hiển thị nó dưới dạng cấu trúc cây (với tất cả các loại phức tạp/ẩn danh được giải quyết). Hơn nữa, tôi cần chú thích tất cả các mục trong cây đó với bản số của chúng (theo định nghĩa của lược đồ).

Ví dụ nhỏ sau đây có thể giúp làm rõ vấn đề của tôi.

a) file 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> 

b) Output Tôi muốn xem:

client [1] 
    first_name [1] 
    last_name [1] 
    address [1..n] 
    street [1] 
    number [0..1] 
    city [1] 
    zipcode [1] 

Không ai biết một giải pháp dựa trên java cho vấn đề này? Tốt hơn là dựa trên Eclipse Schema Infoset, nhưng tôi rất vui khi sử dụng các thư viện khác.

Trả lời

0

Cho rằng lược đồ XSD cũng là XML, bạn có thể xử lý điều này khi XML cung cấp cho bạn nhiều tùy chọn về cách thực hiện điều này.

Tùy chọn của tôi sẽ sử dụng biểu định kiểu XSLT với mẫu để khớp với yếu tố loại và yếu tố phức tạp để lấy danh sách đầu ra và các mẫu khác để khớp với thuộc tính minOccurs và maxOccurs để lấy thẻ của bạn.

Ví dụ về các bảng tính để thực hiện việc này có thể đã có sẵn trực tuyến rồi.

+0

Làm cách nào để giải quyết nội dung của các loại ẩn danh/phức tạp bằng XSLT? Bạn có ví dụ nào về điều này không? –

1

XSOM có thể bình thường hóa XSD thành cấu trúc dữ liệu dễ hiểu mà bạn có thể lặp lại và in ra.

0

Mặc dù không có giải pháp thích hợp, tôi sẽ đề xuất những điều sau: sử dụng công cụ có khả năng tạo một cá thể XML mẫu dựa trên XSD, ví dụ: eclipse IDE (vì nó là mã nguồn mở nên có thể trích xuất mã có liên quan và sử dụng nó trong một giải pháp độc lập). XML này rất gần với cấu trúc cây mà bạn đang yêu cầu. Sau đó, phân tích XSD và chú thích các phần tử trong cấu trúc XML được tạo ra với các cardinalities.

Các vấn đề liên quan