{
  "type": "Document",
  "span": {
    "start": 1,
    "end": 526
  },
  "children": [
    {
      "type": "ProcessingInstruction",
      "span": {
        "start": 1,
        "end": 39
      },
      "target": "xml",
      "data": "version=\"1.0\" encoding=\"UTF-8\""
    },
    {
      "type": "Element",
      "span": {
        "start": 41,
        "end": 525
      },
      "tagName": "foo",
      "attributes": [],
      "children": [
        {
          "type": "Text",
          "span": {
            "start": 46,
            "end": 51
          },
          "data": "\n    ",
          "raw": "\n    "
        },
        {
          "type": "Comment",
          "span": {
            "start": 51,
            "end": 72
          },
          "data": " def='NT-Char'",
          "raw": "<!-- def='NT-Char'-->"
        },
        {
          "type": "Comment",
          "span": {
            "start": 72,
            "end": 77
          },
          "data": "",
          "raw": "<!-->"
        },
        {
          "type": "Text",
          "span": {
            "start": 77,
            "end": 97
          },
          "data": "Char* ']]>' ",
          "raw": "Char* ']]&gt;' "
        },
        {
          "type": "Element",
          "span": {
            "start": 97,
            "end": 124
          },
          "tagName": "nt",
          "attributes": [
            {
              "type": "Attribute",
              "span": {
                "start": 0,
                "end": 0
              },
              "namespace": null,
              "prefix": null,
              "name": "def",
              "rawName": "def",
              "value": "NT-Char",
              "rawValue": "'NT-Char'"
            }
          ],
          "children": [
            {
              "type": "Text",
              "span": {
                "start": 115,
                "end": 119
              },
              "data": "Char",
              "raw": "Char"
            }
          ]
        },
        {
          "type": "Text",
          "span": {
            "start": 124,
            "end": 143
          },
          "data": "*))\n']]>'\n",
          "raw": "*))\n']]&gt;'\n"
        },
        {
          "type": "Element",
          "span": {
            "start": 143,
            "end": 168
          },
          "tagName": "com",
          "attributes": [],
          "children": [
            {
              "type": "Text",
              "span": {
                "start": 148,
                "end": 162
              },
              "data": "CDATA sections",
              "raw": "CDATA sections"
            }
          ]
        },
        {
          "type": "Text",
          "span": {
            "start": 168,
            "end": 169
          },
          "data": "\n",
          "raw": "\n"
        },
        {
          "type": "Element",
          "span": {
            "start": 169,
            "end": 298
          },
          "tagName": "rhs",
          "attributes": [],
          "children": [
            {
              "type": "Text",
              "span": {
                "start": 174,
                "end": 192
              },
              "data": "| '<!DOCTYPE'\n(",
              "raw": "| '&lt;!DOCTYPE'\n("
            },
            {
              "type": "Element",
              "span": {
                "start": 192,
                "end": 219
              },
              "tagName": "nt",
              "attributes": [
                {
                  "type": "Attribute",
                  "span": {
                    "start": 0,
                    "end": 0
                  },
                  "namespace": null,
                  "prefix": null,
                  "name": "def",
                  "rawName": "def",
                  "value": "NT-Char",
                  "rawValue": "\"NT-Char\""
                }
              ],
              "children": [
                {
                  "type": "Text",
                  "span": {
                    "start": 210,
                    "end": 214
                  },
                  "data": "Char",
                  "raw": "Char"
                }
              ]
            },
            {
              "type": "Text",
              "span": {
                "start": 219,
                "end": 241
              },
              "data": " - ('[' | ']'))+\n('['\n",
              "raw": " - ('[' | ']'))+\n('['\n"
            },
            {
              "type": "Element",
              "span": {
                "start": 241,
                "end": 278
              },
              "tagName": "nt",
              "attributes": [
                {
                  "type": "Attribute",
                  "span": {
                    "start": 0,
                    "end": 0
                  },
                  "namespace": null,
                  "prefix": null,
                  "name": "def",
                  "rawName": "def",
                  "value": "NT-simpleDTD",
                  "rawValue": "\"NT-simpleDTD\""
                }
              ],
              "children": [
                {
                  "type": "Text",
                  "span": {
                    "start": 264,
                    "end": 273
                  },
                  "data": "simpleDTD",
                  "raw": "simpleDTD"
                }
              ]
            },
            {
              "type": "Text",
              "span": {
                "start": 278,
                "end": 292
              },
              "data": "*\n']')? '>'",
              "raw": "*\n']')? '&gt;'"
            }
          ]
        },
        {
          "type": "Text",
          "span": {
            "start": 298,
            "end": 299
          },
          "data": "\n",
          "raw": "\n"
        },
        {
          "type": "Element",
          "span": {
            "start": 299,
            "end": 330
          },
          "tagName": "com",
          "attributes": [],
          "children": [
            {
              "type": "Text",
              "span": {
                "start": 304,
                "end": 324
              },
              "data": "doc type declaration",
              "raw": "doc type declaration"
            }
          ]
        },
        {
          "type": "Text",
          "span": {
            "start": 330,
            "end": 331
          },
          "data": "\n",
          "raw": "\n"
        },
        {
          "type": "Element",
          "span": {
            "start": 331,
            "end": 519
          },
          "tagName": "prod",
          "attributes": [
            {
              "type": "Attribute",
              "span": {
                "start": 0,
                "end": 0
              },
              "namespace": null,
              "prefix": null,
              "name": "id",
              "rawName": "id",
              "value": "NT-simpleDTD",
              "rawValue": "\"NT-simpleDTD\""
            }
          ],
          "children": [
            {
              "type": "Element",
              "span": {
                "start": 355,
                "end": 375
              },
              "tagName": "lhs",
              "attributes": [],
              "children": [
                {
                  "type": "Text",
                  "span": {
                    "start": 360,
                    "end": 369
                  },
                  "data": "simpleDTD",
                  "raw": "simpleDTD"
                }
              ]
            },
            {
              "type": "Text",
              "span": {
                "start": 375,
                "end": 376
              },
              "data": "\n",
              "raw": "\n"
            },
            {
              "type": "Element",
              "span": {
                "start": 376,
                "end": 515
              },
              "tagName": "rhs",
              "attributes": [],
              "children": [
                {
                  "type": "Text",
                  "span": {
                    "start": 381,
                    "end": 396
                  },
                  "data": "'<!&como;'\n(",
                  "raw": "'&lt;!&como;'\n("
                },
                {
                  "type": "Element",
                  "span": {
                    "start": 396,
                    "end": 423
                  },
                  "tagName": "nt",
                  "attributes": [
                    {
                      "type": "Attribute",
                      "span": {
                        "start": 0,
                        "end": 0
                      },
                      "namespace": null,
                      "prefix": null,
                      "name": "def",
                      "rawName": "def",
                      "value": "NT-Char",
                      "rawValue": "'NT-Char'"
                    }
                  ],
                  "children": [
                    {
                      "type": "Text",
                      "span": {
                        "start": 414,
                        "end": 418
                      },
                      "data": "Char",
                      "raw": "Char"
                    }
                  ]
                },
                {
                  "type": "Text",
                  "span": {
                    "start": 423,
                    "end": 428
                  },
                  "data": "* -\n(",
                  "raw": "* -\n("
                },
                {
                  "type": "Element",
                  "span": {
                    "start": 428,
                    "end": 455
                  },
                  "tagName": "nt",
                  "attributes": [
                    {
                      "type": "Attribute",
                      "span": {
                        "start": 0,
                        "end": 0
                      },
                      "namespace": null,
                      "prefix": null,
                      "name": "def",
                      "rawName": "def",
                      "value": "NT-Char",
                      "rawValue": "'NT-Char'"
                    }
                  ],
                  "children": [
                    {
                      "type": "Text",
                      "span": {
                        "start": 446,
                        "end": 450
                      },
                      "data": "Char",
                      "raw": "Char"
                    }
                  ]
                },
                {
                  "type": "Text",
                  "span": {
                    "start": 455,
                    "end": 466
                  },
                  "data": "* '&comc;' ",
                  "raw": "* '&comc;' "
                },
                {
                  "type": "Element",
                  "span": {
                    "start": 466,
                    "end": 493
                  },
                  "tagName": "nt",
                  "attributes": [
                    {
                      "type": "Attribute",
                      "span": {
                        "start": 0,
                        "end": 0
                      },
                      "namespace": null,
                      "prefix": null,
                      "name": "def",
                      "rawName": "def",
                      "value": "NT-Char",
                      "rawValue": "'NT-Char'"
                    }
                  ],
                  "children": [
                    {
                      "type": "Text",
                      "span": {
                        "start": 484,
                        "end": 488
                      },
                      "data": "Char",
                      "raw": "Char"
                    }
                  ]
                },
                {
                  "type": "Text",
                  "span": {
                    "start": 493,
                    "end": 509
                  },
                  "data": "*))\n'&comc;>'",
                  "raw": "*))\n'&comc;&gt;'"
                }
              ]
            },
            {
              "type": "Text",
              "span": {
                "start": 515,
                "end": 519
              },
              "data": "-->\n",
              "raw": "-->\n"
            }
          ]
        }
      ]
    }
  ]
}
