MainframeMaster

COBOL Tutorial

COBOL XML-NAMESPACE-PREFIX - Quick Reference

Progress0 of 0 lessons

Overview

XML-NAMESPACE-PREFIX in COBOL refers to XML processing that maintains namespace awareness and handles namespace prefixes. This approach preserves the relationship between namespace prefixes and their corresponding URIs, making it suitable for processing complex XML documents with multiple namespaces and namespace requirements.

Key Features

  • Namespace awareness - Maintains namespace context and prefix mappings
  • Prefix handling - Processes namespace prefixes and their URIs
  • Complex XML support - Handles multi-namespace documents
  • Context preservation - Maintains namespace context during processing

Syntax and Usage

XML-NAMESPACE-PREFIX usage patterns for processing XML with namespace awareness.

Basic XML-NAMESPACE-PREFIX Processing

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-NAMESPACE-PREFIX-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-EVENT-CONTENT PIC X(100). 01 XML-NAMESPACE-PREFIX PIC X(20). 01 XML-NAMESPACE-URI PIC X(100). 01 CUSTOMER-NAME PIC X(30). 01 CUSTOMER-ID PIC 9(5). PROCEDURE DIVISION. XML PARSE XML-DOCUMENT PROCESSING PROCEDURE HANDLE-NAMESPACE-XML END-XML DISPLAY "Customer Name: " CUSTOMER-NAME DISPLAY "Customer ID: " CUSTOMER-ID STOP RUN. HANDLE-NAMESPACE-XML. EVALUATE XML-EVENT-TYPE WHEN "START-OF-ELEMENT" IF XML-EVENT-NAME = "ns:name" MOVE "Y" TO PROCESSING-NAME MOVE "ns" TO XML-NAMESPACE-PREFIX MOVE "http://example.com/customer" TO XML-NAMESPACE-URI END-IF IF XML-EVENT-NAME = "ns:id" MOVE "Y" TO PROCESSING-ID 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-ID = "Y" MOVE XML-EVENT-CONTENT TO CUSTOMER-ID MOVE "N" TO PROCESSING-ID END-IF END-EVALUATE EXIT.

Basic XML-NAMESPACE-PREFIX processing for namespace-aware XML documents.

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
61
62
63
64
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-EVENT-CONTENT PIC X(100). 01 XML-NAMESPACE-PREFIX PIC X(20). 01 XML-NAMESPACE-URI PIC X(100). 01 CUSTOMER-NAME PIC X(30). 01 PRODUCT-NAME PIC X(20). 01 PRODUCT-PRICE PIC 9(5)V99. PROCEDURE DIVISION. XML PARSE XML-DOCUMENT PROCESSING PROCEDURE HANDLE-MULTI-NAMESPACE END-XML DISPLAY "Customer: " CUSTOMER-NAME DISPLAY "Product: " PRODUCT-NAME DISPLAY "Price: " PRODUCT-PRICE STOP RUN. HANDLE-MULTI-NAMESPACE. EVALUATE XML-EVENT-TYPE WHEN "START-OF-ELEMENT" EVALUATE XML-EVENT-NAME WHEN "customer:name" MOVE "Y" TO PROCESSING-CUSTOMER-NAME MOVE "customer" TO XML-NAMESPACE-PREFIX WHEN "product:name" MOVE "Y" TO PROCESSING-PRODUCT-NAME MOVE "product" TO XML-NAMESPACE-PREFIX WHEN "product:price" MOVE "Y" TO PROCESSING-PRODUCT-PRICE END-EVALUATE WHEN "CHARACTER-CONTENT" IF PROCESSING-CUSTOMER-NAME = "Y" MOVE XML-EVENT-CONTENT TO CUSTOMER-NAME MOVE "N" TO PROCESSING-CUSTOMER-NAME END-IF IF PROCESSING-PRODUCT-NAME = "Y" MOVE XML-EVENT-CONTENT TO PRODUCT-NAME MOVE "N" TO PROCESSING-PRODUCT-NAME END-IF IF PROCESSING-PRODUCT-PRICE = "Y" MOVE XML-EVENT-CONTENT TO PRODUCT-PRICE MOVE "N" TO PROCESSING-PRODUCT-PRICE END-IF END-EVALUATE EXIT.

XML-NAMESPACE-PREFIX processing for documents with multiple namespaces.

Namespace Declaration Processing

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
IDENTIFICATION DIVISION. PROGRAM-ID. XML-NAMESPACE-DECLARATIONS. DATA DIVISION. WORKING-STORAGE SECTION. 01 XML-DOCUMENT PIC X(1000) VALUE " Value 1 Value 2 ". 01 XML-EVENT-TYPE PIC X(20). 01 XML-EVENT-NAME PIC X(30). 01 XML-EVENT-CONTENT PIC X(100). 01 XML-NAMESPACE-PREFIX PIC X(20). 01 XML-NAMESPACE-URI PIC X(100). 01 NAMESPACE-MAPPINGS. 05 NS1-PREFIX PIC X(10) VALUE "ns1". 05 NS1-URI PIC X(50) VALUE "http://example.com/namespace1". 05 NS2-PREFIX PIC X(10) VALUE "ns2". 05 NS2-URI PIC X(50) VALUE "http://example.com/namespace2". PROCEDURE DIVISION. XML PARSE XML-DOCUMENT PROCESSING PROCEDURE HANDLE-NAMESPACE-DECLARATIONS END-XML DISPLAY "Namespace processing completed" STOP RUN. HANDLE-NAMESPACE-DECLARATIONS. EVALUATE XML-EVENT-TYPE WHEN "START-OF-ELEMENT" IF XML-EVENT-NAME = "ns1:element1" MOVE "ns1" TO XML-NAMESPACE-PREFIX MOVE "http://example.com/namespace1" TO XML-NAMESPACE-URI MOVE "Y" TO PROCESSING-NS1-ELEMENT END-IF IF XML-EVENT-NAME = "ns2:element2" MOVE "ns2" TO XML-NAMESPACE-PREFIX MOVE "http://example.com/namespace2" TO XML-NAMESPACE-URI MOVE "Y" TO PROCESSING-NS2-ELEMENT END-IF WHEN "CHARACTER-CONTENT" IF PROCESSING-NS1-ELEMENT = "Y" DISPLAY "NS1 Element: " XML-EVENT-CONTENT MOVE "N" TO PROCESSING-NS1-ELEMENT END-IF IF PROCESSING-NS2-ELEMENT = "Y" DISPLAY "NS2 Element: " XML-EVENT-CONTENT MOVE "N" TO PROCESSING-NS2-ELEMENT END-IF END-EVALUATE EXIT.

XML-NAMESPACE-PREFIX processing with explicit namespace declaration handling.

Processing Types

Single Namespace

XML with one namespace prefix.

xml
1
2
3
4
John Doe 12345

Multiple Namespaces

XML with multiple namespace prefixes.

xml
1
2
3
4
John Widget

Nested Namespaces

XML with nested namespace contexts.

xml
1
2
3
4
5
Value

Default Namespace

XML with default namespace and prefixes.

xml
1
2
3
4
Default namespace Prefixed namespace

Best Practices

  • Namespace mapping - Maintain clear mappings between prefixes and URIs
  • Context awareness - Track namespace context during processing
  • Prefix validation - Validate namespace prefixes against declarations
  • Error handling - Handle namespace-related errors gracefully
  • Performance consideration - Be aware of namespace processing overhead

XML-NAMESPACE-PREFIX Quick Reference

Processing TypeBehaviorUse Case
Single NamespaceMaintains prefix-URI mappingSimple namespaced XML
Multiple NamespacesHandles multiple prefix-URI mappingsComplex multi-namespace documents
Nested NamespacesTracks namespace context changesDocuments with nested namespace scopes
Default NamespaceHandles both default and prefixed namespacesMixed default and prefixed namespace usage

Test Your Knowledge

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

  • To generate XML documents
  • To handle namespace prefixes in XML processing and manage namespace declarations
  • To validate XML schemas
  • To format XML output

2. How does XML-NAMESPACE-PREFIX handle namespace declarations?

  • It ignores all namespace declarations
  • It processes namespace declarations and maps prefixes to URIs
  • It only handles default namespaces
  • It treats prefixes as regular element names

3. What is the main difference between XML-NAMESPACE-PREFIX and XML-NNAMESPACE?

  • XML-NAMESPACE-PREFIX is faster
  • XML-NAMESPACE-PREFIX maintains namespace awareness and prefix mapping
  • XML-NAMESPACE-PREFIX only works with specific XML formats
  • There is no difference

4. How does XML-NAMESPACE-PREFIX handle prefixed elements?

  • It treats them as regular element names
  • It maintains the prefix-namespace relationship and processes them as namespace-qualified elements
  • It generates an error
  • It skips them entirely

5. What is a common use case for XML-NAMESPACE-PREFIX?

  • Processing simple XML without namespaces
  • Processing complex XML documents with multiple namespaces and prefixes
  • Validating namespace declarations
  • Generating namespace-aware XML

Frequently Asked Questions