Add schema validator, make schemas root relative.
diff --git a/specification/json/sections/cper-arm-processor.json b/specification/json/sections/cper-arm-processor.json
index 55b1dbc..4e473fc 100644
--- a/specification/json/sections/cper-arm-processor.json
+++ b/specification/json/sections/cper-arm-processor.json
@@ -92,11 +92,11 @@
                     },
                     "errorType": {
                         "type": "object",
-                        "$ref": "../common/cper-json-nvp.json"
+                        "$ref": "./common/cper-json-nvp.json"
                     },
                     "multipleError": {
                         "type": "object",
-                        "$ref": "../common/cper-json-nvp.json"
+                        "$ref": "./common/cper-json-nvp.json"
                     },
                     "flags": {
                         "type": "object",
@@ -153,11 +153,11 @@
                                     },
                                     "transactionType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "operation": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "level": {
                                         "type": "integer"
@@ -225,11 +225,11 @@
                                     },
                                     "transactionType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "operation": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "level": {
                                         "type": "integer"
@@ -251,15 +251,15 @@
                                     },
                                     "participationType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "addressSpace": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "accessMode": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "memoryAttributes": {
                                         "type": "integer"
@@ -286,7 +286,7 @@
                 "properties": {
                     "registerContextType": {
                         "type": "object",
-                        "$ref": "../common/cper-json-nvp.json"
+                        "$ref": "./common/cper-json-nvp.json"
                     },
                     "registerArraySize": {
                         "type": "integer"
diff --git a/specification/json/sections/cper-cxl-protocol.json b/specification/json/sections/cper-cxl-protocol.json
index 43ca251..fa25e81 100644
--- a/specification/json/sections/cper-cxl-protocol.json
+++ b/specification/json/sections/cper-cxl-protocol.json
@@ -34,7 +34,7 @@
         },
         "agentType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "agentAddress": {
             "type": "object",
diff --git a/specification/json/sections/cper-firmware.json b/specification/json/sections/cper-firmware.json
index 5c7126a..2003f6e 100644
--- a/specification/json/sections/cper-firmware.json
+++ b/specification/json/sections/cper-firmware.json
@@ -7,7 +7,7 @@
     "properties": {
         "errorRecordType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "revision": {
             "type": "integer"
diff --git a/specification/json/sections/cper-generic-dmar.json b/specification/json/sections/cper-generic-dmar.json
index e8f9d0e..ddccc14 100644
--- a/specification/json/sections/cper-generic-dmar.json
+++ b/specification/json/sections/cper-generic-dmar.json
@@ -28,15 +28,15 @@
         },
         "accessType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "addressType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "architectureType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "deviceAddress": {
             "type" : "integer"
diff --git a/specification/json/sections/cper-generic-processor.json b/specification/json/sections/cper-generic-processor.json
index 568046f..d30719c 100644
--- a/specification/json/sections/cper-generic-processor.json
+++ b/specification/json/sections/cper-generic-processor.json
@@ -52,19 +52,19 @@
         },
         "processorType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "processorISA": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "errorType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "operation": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "flags": {
             "type": "object",
diff --git a/specification/json/sections/cper-ia32x64-processor.json b/specification/json/sections/cper-ia32x64-processor.json
index ff482e5..33e6511 100644
--- a/specification/json/sections/cper-ia32x64-processor.json
+++ b/specification/json/sections/cper-ia32x64-processor.json
@@ -118,11 +118,11 @@
                                     },
                                     "transactionType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "operation": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "level": {
                                         "type": "integer",
@@ -188,11 +188,11 @@
                                     },
                                     "transactionType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "operation": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "level": {
                                         "type": "integer",
@@ -215,11 +215,11 @@
                                     },
                                     "participationType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "addressSpace": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "timedOut": {
                                         "type": "boolean"
@@ -257,7 +257,7 @@
                                     },
                                     "errorType": {
                                         "type": "object",
-                                        "$ref": "../common/cper-json-nvp.json"
+                                        "$ref": "./common/cper-json-nvp.json"
                                     },
                                     "processorContextCorrupt": {
                                         "type": "boolean"
@@ -302,7 +302,7 @@
                 "properties": {
                     "registerContextType": {
                         "type": "object",
-                        "$ref": "../common/cper-json-nvp.json"
+                        "$ref": "./common/cper-json-nvp.json"
                     },
                     "registerArraySize": {
                         "type": "integer"
diff --git a/specification/json/sections/cper-memory.json b/specification/json/sections/cper-memory.json
index d4686b1..38243c1 100644
--- a/specification/json/sections/cper-memory.json
+++ b/specification/json/sections/cper-memory.json
@@ -67,7 +67,7 @@
         },
         "errorStatus": {
             "type": "object",
-            "$ref": "../common/cper-json-error-status.json"
+            "$ref": "./common/cper-json-error-status.json"
         },
         "bank": {
             "type": "object",
@@ -97,7 +97,7 @@
         },
         "memoryErrorType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "extended": {
             "type": "object",
diff --git a/specification/json/sections/cper-memory2.json b/specification/json/sections/cper-memory2.json
index 6f615c3..cd3da93 100644
--- a/specification/json/sections/cper-memory2.json
+++ b/specification/json/sections/cper-memory2.json
@@ -79,7 +79,7 @@
         },
         "errorStatus": {
             "type": "object",
-            "$ref": "../common/cper-json-error-status.json"
+            "$ref": "./common/cper-json-error-status.json"
         },
         "bank": {
             "type": "object",
@@ -109,7 +109,7 @@
         },
         "memoryErrorType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "status": {
             "type": "object",
diff --git a/specification/json/sections/cper-pci-bus.json b/specification/json/sections/cper-pci-bus.json
index 2666610..0e9c121 100644
--- a/specification/json/sections/cper-pci-bus.json
+++ b/specification/json/sections/cper-pci-bus.json
@@ -40,11 +40,11 @@
         },
         "errorStatus": {
             "type": "object",
-            "$ref": "../common/cper-json-error-status.json"
+            "$ref": "./common/cper-json-error-status.json"
         },
         "errorType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "busID": {
             "type": "object",
diff --git a/specification/json/sections/cper-pci-component.json b/specification/json/sections/cper-pci-component.json
index 4e46485..878713e 100644
--- a/specification/json/sections/cper-pci-component.json
+++ b/specification/json/sections/cper-pci-component.json
@@ -28,7 +28,7 @@
         },
         "errorStatus": {
             "type": "object",
-            "$ref": "../common/cper-json-error-status.json"
+            "$ref": "./common/cper-json-error-status.json"
         },
         "idInfo": {
             "type": "object",
diff --git a/specification/json/sections/cper-pcie.json b/specification/json/sections/cper-pcie.json
index 5521e2b..05e6dad 100644
--- a/specification/json/sections/cper-pcie.json
+++ b/specification/json/sections/cper-pcie.json
@@ -37,7 +37,7 @@
         },
         "portType": {
             "type": "object",
-            "$ref": "../common/cper-json-nvp.json"
+            "$ref": "./common/cper-json-nvp.json"
         },
         "version": {
             "type": "object",
diff --git a/specification/json/sections/cper-vtd-dmar.json b/specification/json/sections/cper-vtd-dmar.json
index aa6716d..baa5942 100644
--- a/specification/json/sections/cper-vtd-dmar.json
+++ b/specification/json/sections/cper-vtd-dmar.json
@@ -56,7 +56,7 @@
                 },
                 "type": {
                     "type": "object",
-                    "$ref": "../common/cper-json-nvp.json"
+                    "$ref": "./common/cper-json-nvp.json"
                 }
             }
         },