MainframeMaster

COBOL Tutorial

COBOL XML-NAMESPACE - Quick Reference

Progress0 of 0 lessons

Overview

XML-NAMESPACE in COBOL refers to the functionality for handling XML namespaces during XML document processing. XML namespaces provide a way to avoid naming conflicts by qualifying element names with Uniform Resource Identifiers (URIs), enabling the processing of complex XML documents with elements from different vocabularies.

Key Features

  • Namespace awareness - Process XML with namespace support
  • Prefix handling - Work with namespace prefixes and URIs
  • Conflict resolution - Avoid naming conflicts between elements
  • Multi-namespace support - Handle multiple namespaces in one document

Syntax and Usage

XML namespace handling syntax and usage patterns for different XML processing scenarios.

Basic XML Namespace Handling

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
IDENTIFICATION DIVISION. PROGRAM-ID. XML-NAMESPACE-EXAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 XML-DOCUMENT PIC X(1000) VALUE " John Doe 12345 ". 01 XML-EVENT-TYPE PIC X(20). 01 XML-EVENT-NAME PIC X(30). 01 XML-NAMESPACE-URI PIC X(100). 01 XML-NAMESPACE-PREFIX PIC X(10). 01 CUSTOMER-NAME PIC X(30). 01 CUSTOMER-ID PIC 9(5). PROCEDURE DIVISION. XML PARSE XML-DOCUMENT PROCESSING PROCEDURE HANDLE-NAMESPACE NAMESPACE-PREFIX IS XML-NAMESPACE-PREFIX NAMESPACE-URI IS XML-NAMESPACE-URI END-XML DISPLAY "Customer Name: " CUSTOMER-NAME DISPLAY "Customer ID: " CUSTOMER-ID STOP RUN. HANDLE-NAMESPACE. EVALUATE XML-EVENT-TYPE WHEN "START-OF-ELEMENT" IF XML-EVENT-NAME = "name" AND XML-NAMESPACE-PREFIX = "ns" MOVE "Y" TO PROCESSING-NAME END-IF WHEN "CHARACTER-CONTENT" IF PROCESSING-NAME = "Y" MOVE XML-EVENT-CONTENT TO CUSTOMER-NAME MOVE "N" TO PROCESSING-NAME END-IF END-EVALUATE EXIT.

Basic XML namespace handling to process namespaced XML elements.

Multiple Namespace Handling

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
IDENTIFICATION DIVISION. PROGRAM-ID. XML-MULTI-NAMESPACE. DATA DIVISION. WORKING-STORAGE SECTION. 01 XML-DOCUMENT PIC X(1000) VALUE " John Doe Widget 29.99 ". 01 XML-EVENT-TYPE PIC X(20). 01 XML-EVENT-NAME PIC X(30). 01 XML-NAMESPACE-URI PIC X(100). 01 XML-NAMESPACE-PREFIX PIC X(10). 01 PROCESSING-FLAGS. 05 PROCESSING-CUSTOMER PIC X VALUE "N". 05 PROCESSING-PRODUCT PIC X VALUE "N". 01 ORDER-DATA. 05 CUSTOMER-NAME PIC X(30). 05 PRODUCT-ITEM PIC X(20). 05 PRODUCT-PRICE PIC 9(4)V99. PROCEDURE DIVISION. XML PARSE XML-DOCUMENT PROCESSING PROCEDURE HANDLE-MULTI-NAMESPACE END-XML DISPLAY "Customer: " CUSTOMER-NAME DISPLAY "Product: " PRODUCT-ITEM DISPLAY "Price: " PRODUCT-PRICE STOP RUN. HANDLE-MULTI-NAMESPACE. EVALUATE XML-EVENT-TYPE WHEN "START-OF-ELEMENT" EVALUATE XML-NAMESPACE-PREFIX WHEN "customer" IF XML-EVENT-NAME = "name" MOVE "Y" TO PROCESSING-CUSTOMER END-IF WHEN "product" EVALUATE XML-EVENT-NAME WHEN "item" MOVE "Y" TO PROCESSING-PRODUCT WHEN "price" MOVE "Y" TO PROCESSING-PRICE END-EVALUATE END-EVALUATE WHEN "CHARACTER-CONTENT" IF PROCESSING-CUSTOMER = "Y" MOVE XML-EVENT-CONTENT TO CUSTOMER-NAME MOVE "N" TO PROCESSING-CUSTOMER END-IF IF PROCESSING-PRODUCT = "Y" MOVE XML-EVENT-CONTENT TO PRODUCT-ITEM MOVE "N" TO PROCESSING-PRODUCT END-IF END-EVALUATE EXIT.

Handling multiple namespaces in a single XML document.

Default Namespace Handling

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
IDENTIFICATION DIVISION. PROGRAM-ID. XML-DEFAULT-NAMESPACE. DATA DIVISION. WORKING-STORAGE SECTION. 01 XML-DOCUMENT PIC X(1000) VALUE " John Doe
123 Main St
". 01 XML-EVENT-TYPE PIC X(20). 01 XML-EVENT-NAME PIC X(30). 01 XML-NAMESPACE-URI PIC X(100). 01 DEFAULT-NAMESPACE PIC X(100) VALUE "http://example.com/customer". 01 CUSTOMER-INFO. 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-ADDRESS PIC X(50). PROCEDURE DIVISION. XML PARSE XML-DOCUMENT PROCESSING PROCEDURE HANDLE-DEFAULT-NAMESPACE END-XML DISPLAY "Name: " CUSTOMER-NAME DISPLAY "Address: " CUSTOMER-ADDRESS STOP RUN. HANDLE-DEFAULT-NAMESPACE. EVALUATE XML-EVENT-TYPE WHEN "START-OF-ELEMENT" IF XML-NAMESPACE-URI = DEFAULT-NAMESPACE EVALUATE XML-EVENT-NAME WHEN "name" MOVE "Y" TO PROCESSING-NAME WHEN "address" MOVE "Y" TO PROCESSING-ADDRESS END-EVALUATE END-IF WHEN "CHARACTER-CONTENT" IF PROCESSING-NAME = "Y" MOVE XML-EVENT-CONTENT TO CUSTOMER-NAME MOVE "N" TO PROCESSING-NAME END-IF IF PROCESSING-ADDRESS = "Y" MOVE XML-EVENT-CONTENT TO CUSTOMER-ADDRESS MOVE "N" TO PROCESSING-ADDRESS END-IF END-EVALUATE EXIT.

Handling default namespaces without explicit prefixes.

Namespace Types

Prefixed Namespaces

Namespaces with explicit prefixes.

xml
1
2
xmlns:prefix="uri" content

Default Namespaces

Namespaces without explicit prefixes.

xml
1
2
xmlns="uri" content

Multiple Namespaces

Multiple namespaces in one document.

xml
1
2
3
xmlns:ns1="uri1" xmlns:ns2="uri2" content content

Nested Namespaces

Namespaces with different scopes.

xml
1
2
3
4
5
content

Best Practices

  • Validate namespaces - Always validate namespace URIs and prefixes
  • Handle conflicts - Be prepared to handle namespace conflicts
  • Use meaningful prefixes - Choose descriptive namespace prefixes
  • Document namespace usage - Document which namespaces your program expects
  • Error handling - Provide error handling for namespace-related issues

XML-NAMESPACE Quick Reference

Namespace TypeDeclarationUsage
Prefixedxmlns:prefix="uri"Explicit namespace qualification
Defaultxmlns="uri"Implicit namespace for elements
Multiplexmlns:ns1="uri1" xmlns:ns2="uri2"Multiple vocabularies
NestedDifferent scopesHierarchical namespace structure

Test Your Knowledge

1. What is the primary purpose of XML-NAMESPACE in COBOL?

  • To generate XML documents
  • To handle XML namespaces, prefixes, and URI management during XML processing
  • To validate XML schemas
  • To format XML output

2. What is an XML namespace?

  • A file containing XML data
  • A way to avoid naming conflicts by qualifying element names with URIs
  • A type of XML attribute
  • A COBOL data structure

3. How are XML namespaces typically declared?

  • Using xmlns attributes in XML elements
  • Using special COBOL statements
  • Using external configuration files
  • Using database tables

4. What is the relationship between namespace prefixes and URIs?

  • They are the same thing
  • Prefixes are shortcuts that map to full URIs
  • URIs are shortcuts that map to prefixes
  • They are completely unrelated

5. How do you handle namespaces in COBOL XML processing?

  • Using special namespace-aware XML parsing
  • Using manual string manipulation
  • Using external tools
  • Namespaces cannot be handled in COBOL

Frequently Asked Questions