Phân tích cú pháp EDIFACT thực sự không phức tạp. Chỉ cần tách các ký tự của sytax: đầu tiên tại số '
để nhận các phân đoạn, so với số +
để lấy các phần tử dữ liệu của các phân đoạn đó và tại :
để nhận các thành phần riêng lẻ. Bạn cần phải chăm sóc ký tự thoát seperator, tất nhiên. Các ký tự được sử dụng ở đây chỉ là mặc định, chúng có thể được thay đổi ở đầu thông báo bằng phân đoạn UNA tùy chọn. Trên thực tế, wikipedia article trên EDIFACT cho một giới thiệu khá tốt (nhưng ngắn gọn) về điều đó. Và định dạng được ghi lại chi tiết trên UN's UNECE site (vâng, đó là rất nhiều và khó đọc).
Phần khó khăn là lấy thông tin ra khỏi đó và vào ứng dụng của bạn (và xác minh nó hợp lệ, để lại một mình tạo thông báo lỗi tốt). Nếu bạn thực sự có kế hoạch viết một trình phân tích cú pháp comlete ra khỏi không có gì cho tất cả các ngôn ngữ đó, thì: Không, không có cách nào dễ dàng để làm điều này. Cũng không có bất kỳ biểu diễn dữ liệu linh hoạt nào khác. Điều đó là một nhiệm vụ khó khăn và sẽ luôn luôn được.
Nhưng đây là một ý tưởng: nếu bạn tham gia vào XML nhiều (hoặc bất kỳ "công nghệ hiện đại" nào khác mà bạn muốn gọi nó ...). Nó sẽ là một nhiệm vụ tương đối dễ dàng để viết một số chương trình chuyển đổi các thông điệp EDIFACT thành một số định dạng XML-EDIFACT thống nhất (đó là một điều khá khủng khiếp và rất có thể sẽ làm tôi thất vọng). Bạn có thể chuyển đổi tất cả các phân khúc EDIFACT vào một thẻ XML, có lẽ như thế này:
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
Trong XML:
<segment qualifier="ERC">
<element>
<component>A7V</component>
<component>1</component>
<component>AMD<component>
</element>
</segment>
<segment qualifier="IFT">
<element>
<component>3</component>
</element>
<element>
<component>NO MORE FLIGHTS</component>
</element>
</segment>
Sau đó, bạn có thể tháo sức mạnh của công cụ XML và các thư viện của bạn vào nó để xác nhận/đánh giá nó.
Bạn cũng có thể làm điều đó cụ thể hơn, như thế này:
<segment_ERC>
<element>
<component>A7V</component>
<component>1</component>
<component>AMD<component>
</element>
</segment_ERC>
<segment_IFT>
<element>
<component>3</component>
</element>
<element>
<component>NO MORE FLIGHTS</component>
</element>
</segment_IFT>
Điều này có thể thực hiện xác nhận qua XSD dễ dàng hơn. Bạn có thể nhận được tất nhiên như cụ thể như bạn muốn với cuộc trò chuyện này, nhưng bạn sẽ sớm hay muộn đến một điểm, nơi bạn sẽ cần phải đặt thông tin về cấu trúc của thư hiện đang được phân tích cú pháp của bạn vào trình chuyển đổi (vì nó không tầm thường biết phân khúc nào được lồng vào các phân đoạn khác nhóm chúng. Không chỉ có UNG
, UNH
và các phân đoạn đó mà bạn không thấy trực tiếp).
Tuy nhiên, bạn sẽ phải tạo các chương trình/lược đồ đánh giá/máy đánh giá cụ thể cho các tin nhắn bạn nhận được, theo sổ tay EDIFACT bạn sẽ nhận được dưới dạng tài liệu.