이 토픽에서는 XML 구문 분석기가 명시적 널을 핸들링하는 방법을 설명합니다.
XML 도메인에는 메시지 비트스트림에 대한 널(null) 값 개념이 없습니다. 이는 XML 메시지에 XML 구문 분석기에 의해 메시지 트리에 명시적 널(null) 값이 작성되도록 하는 일련의 바이트가 없음을 의미합니다. 구문 분석기가 명시적 널(null) 값으로 메시지 트리 필드를 작성하지 않지만, 이 형식의 필드를 작성한 메시지 플로우 내에 ESQL을 코드화할 수 있습니다.
XML 구문 분석기가 메시지 트리로부터 새 메시지 비트스트림을 구성하는 경우, 명시적 널(null) 값을 발견할 수 있으며 이를 핸들링할 수 있어야 합니다. 이러한 상황에서 명시적 널(null) 값은 "기록할 문자가 없는 것"으로 간주되며, 필드가 빈 태그로 작성됩니다.
XML 도메인에는 출력 XML 메시지에 XML 빈 태그를 작성하도록 하는 여러 값이 있습니다.
XML 메시지에서 이러한 필드가 빈 태그로 작성되면, 이후에 XML 메시지가 구문 분석되면 이 세 가지 경우를 구분할 수 없습니다. XML에서 빈 태그가 구문 분석될 때, 값이 없는 XML 메시지 트리 필드가 작성됩니다. 이 필드는 명시적 널(null) 값을 포함하는 메시지 트리 필드와 다르며, 길이가 0인 문자열을 포함하는 메시지 트리 필드와도 다릅니다.
XML 구문 분석기가 서로 다른 세 메시지 트리 필드 값을 메시지 비트스트림의 같은 결과로 해석하지만, 다른 메시지 트리 조작이 이를 구분할 수 있습니다. XML 구문 분석기가 명시적 널(null) 및 길이가 0인 문자열을 포함하는 필드를 작성하지는 않지만, 메시지 플로우에서 이를 수행하는 조작을 수행할 수 있습니다.
따라서 메시지 플로우가 XML 도메인에서 메시지를 처리 중이면, ESQL또는 Java에서 명시적 널(null) 값, 길이가 0인 문자열 및 값이 없는 메시지 트리 필드를 구분해야 합니다. ESQL을 코드화하여 요소 값을 조회하는 경우 명시적 널(null) 값을 포함하는 필드도 널(null)로 간주되지 않습니다.
XML 기록 프로세스는 이러한 조건을 처리할 수 있지만, ESQL 내의 다른 조작은 이 조건을 널(null) 값으로 취급하지 않습니다. XML 도메인에는 널(null)에 대한 개념이 없으므로, 구분 분석기가 명시적 널(null) 값을 포함하는 필드를 작성하지 않습니다. XML 도메인은 문자 기반 도메인이므로, 필드 값을 조회할 때 결과를 문자 필드로 리턴합니다. 명시적 널(null) 값으로 XML 메시지 트리 필드를 작성하는 경우, 이 필드는 메시지 트리 필드의 값을 가져오는 ESQL에 대한 널(null) 값으로 간주되지 않습니다.
리턴되는 값은 필드 컨텐츠의 문자 표현이며, 이 경우에는 문자열 'NULL'입니다. 예를 들면, IS NULL과 이러한 비교를 수행하면, TRUE 값으로 평가되지 않습니다. 이 메시지 트리 필드를 다른 메시지 트리로 복사하면, 대상 메시지 트리 필드가 문자열 'NULL'로 채워집니다.