2021년 6월 11일 금요일

Difference between PO/PI/XI XML version 0.1 and 1.1


기본적으로 XML포맷으로 인터페이스를 하는 SAP XI/PI/PO에서 소스,타겟 간에 테스트나 운영중인 인터페이스에서 이상한 문자로 인한 매핑에러가 발생되는 경우가 있습니다.
"Character reference &# See error logs for details"
이렇게 XML에서 허용안하는 문자에 대해 가끔 에러가 발생되어 송신측이 SOAP인경우 CDATA로 인한 데이터를 묶어주거나 JDBC인경우 송신측 문제가 되는 데이터를 삭제해주는데 PO에서는 자바매핑으로 해결하는 경우도 있습니다.
근데 이런방법들도 완벽하지 않은게 PO에서는 어떤 문제가 되는 데이터가 유입되는지는 알수 없기에 100% 해결될수 없는 부분이 있다고 생각이 듭니다.

다른 사이트에서 보았는데
SOAP호출시 사용되는 CDATA로 묶이는 데이터에도 허용안하는 문자들로 인해 이클립스 안에서 에러가 발생될수 있다고 하네요.
"An invalid XML character (Unicode: 0xb) was found in the CDATA section"
송,수신간에 OAP연결 방식에도 SOAP버젼이 1.1과 1.2가 존재하는데 이 두개가 W3C(World Wide Web Consortium) 표준이라고 하는데 SOAP 1.1버젼은 XML 1.0이라고 합니다.

일전에 문제가 되었던 데이터는
Unicode Group: Basic Latin
Symbol Name: Start Of Heading
Decimal Cdoe: &#1
이런 유니코드 데이터였습니다.

PO의 Message Mapping 테스트를 할때 송신측 XML를 보면
<?xml version="1.0" encoding="UTF-8"?>
선언부를 볼수 있는데 이런 프롤로그는 XML버젼 1.0에서 UTF-8로 인코딩되었음을 알려주고 있습니다.

version="1.0"을 1.1로 변경해서 매핑테스트를 하면 정상적으로 작동되는것을 확인할 수 있는데 앞으로 1.1버젼으로 사용하며 되는거 아닌가.. 라는 생각이 들지만 PO에 사용되는 XML 버젼을 설정하는 기능은 찾지 못했다. 아마도 1.1을 사용을 하려면 강제로 변경해야되지 않을까 생각됩니다.

XML 버젼의 1.0과 1.1의 차이에 대해 찾아본 검색내용인데
1.1은 2004년 2월에 출시되었고 특정 유니코드 버젼에 의존하지 않도록 XML 1.0을 업데이트 했다고 합니다. 다른 설명으로는
"몽고어, 일본메이지시대에 사용되다 없어진 Yi음절, 캄보디아어, 암하라어, 몰디브어, 버마어 또는 일부 다른 소수언어로 이야기 하고 있거나 이런 언어를 이용해서 마크업(일반 텍스트가 아닌) 을 표기하길 원한다면 XML 버젼 선언부 속성에 설정할수 있다고 합니다."
이런 데이터들은 EAI 프로젝트를 하며 일반적으로 전소오디는 데이터는 아닌것 같은데요. 제한적으로 몇몇 전문개발자들에게는 유용한 면도 있고 엘리먼트, 어트리뷰트, 엔티티명 등에 대해 문자열셋을 확장 사용도 가능한것 같습니다만 보편적으로 사용하는것에 대해서는 유익하지 않다고 하는것 같네요.

XML 1.1은 매우 드문경우에 사용되며 널리 구현되어있지 않다고 하는데 저도 국내에서 프로젝트를 하면서 1.1을 사용하는 곳을 지금까지 본적이 없었네요. 그리고 공유한 기능? 이 필요한 곳에 사용하는걸 권장하고 있으며 특정 요구사항이 없는 경우 XML 1.0이 권장사항인것 같습니다.

그리고 1.0같은경우 국내만 그런건지 모르겠지만 업계표준이라는 이야기도 있고 1.1의 사용사례에 대해서도 보기 드물었던것 같습니다.

1.1 XML버젼에 대해 찾은 다른 내용에서는

"확장 가능한 마크업 언어 Extensible Markup Language(XML)은 SGML(ISO 8879)에서 파생된 간단하고 매우 유연한 텍스트 형식이며 버젼 1.1은 W3C권장 사항이라고도 하는것 같네요. XML 1.1은 유니코드의 모든 버젼을 사용하도록 구조화 되어 있으며, 주로 최신 버젼의 유니코드를 사용하고자 하는 문서 작성자를 위해 설계되었다."
참고사이트:
XML
XML(Extensible Markup Language) 1.1

댓글 없음:

댓글 쓰기