Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Outline for DTD file is messed up #226

Closed
fbricon opened this issue Nov 14, 2018 · 23 comments
Closed

Outline for DTD file is messed up #226

fbricon opened this issue Nov 14, 2018 · 23 comments
Assignees
Labels
bug Something isn't working DTD symbols
Milestone

Comments

@fbricon
Copy link
Contributor

fbricon commented Nov 14, 2018

Save http://java.sun.com/dtd/web-app_2_3.dtd locally and open it, you'll see the outline view and breadcrumbs (if "breadcrumbs.enabled": true) look really bad:
screen shot 2018-11-14 at 2 25 29 pm

@fbricon fbricon added bug Something isn't working symbols DTD labels Nov 14, 2018
@angelozerr
Copy link
Contributor

#228 should fix that

@angelozerr
Copy link
Contributor

@fbricon I have started to manage DTD ElementDecl and attributes witth teh DOMDocument. Outline should now display DTD <!ELEMENT and <!ATTLIST (external or intenal DTD should work).

For external DTD, I display the DOCTYPE, because external DTD is a DOMDOcument which have only a DOMDocumentType (it's a choice that I have done to continue to work with DOMDocument only, and not have a new structure like DTDDocument))

@NikolasKomonen, @fbricon hope you will like it. Tests must be written.

@fbricon
Copy link
Contributor Author

fbricon commented Nov 25, 2018

This is indeed much better. But I think AttList support still need some love:

screen shot 2018-11-25 at 5 14 40 pm

@fbricon
Copy link
Contributor Author

fbricon commented Nov 25, 2018

mmm WTP chose to not even display AttList elements in its outline

@angelozerr
Copy link
Contributor

@fbricon I wanted to display attribute in hierarchy (I have coded that), but it seems teh hierarchy doesn't use the "containerName". It seems it uses location, so it's not possible to display attributes after a given element as a tree. That's why I display attribute with element@attribute label.

Any feedback are welcome!

@fbricon
Copy link
Contributor Author

fbricon commented Nov 30, 2018

do you have a new screenshot?

@angelozerr
Copy link
Contributor

I will do it if you wish, but you can try it. I have pushed my work.

@fbricon
Copy link
Contributor Author

fbricon commented Nov 30, 2018

Sorry I can't play with lsp4xml today

@angelozerr
Copy link
Contributor

Here the result in vscode:

image

Please note that you must use vscode-xml 0.2.0 to test it with lsp4xml from master because if redhat-developer/vscode-xml#94

@angelozerr angelozerr self-assigned this Dec 3, 2018
@fbricon
Copy link
Contributor Author

fbricon commented Dec 4, 2018

  • The ordering is completely random, I'd expect it to follow either the alphabetical order, or positions, or elements then attlist, anything really. This is unsettling.
  • atllist and elements should have different SymbolKinds, so they can be distinguished visually

@angelozerr
Copy link
Contributor

The ordering is completely random, I'd expect it to follow either the alphabetical order, or positions, or elements then attlist, anything really. This is unsettling.

I think you have your Outline vscode sorted by type, no? Sort by location or name should fix your sort, no?

atllist and elements should have different SymbolKinds, so they can be distinguished visually

fixed.

I have written tests too, so if you think we can close this issue, close it. thanks.

@fbricon fbricon added in progress and removed to do labels Dec 5, 2018
@fbricon
Copy link
Contributor Author

fbricon commented Dec 5, 2018

So the list of document symbol returned to the client is properly ordered, matching the order of their declaration in the document.

debug output
[Trace - 2:10:16 AM] Sending request 'textDocument/documentSymbol - (13)'.
Params: {
    "textDocument": {
        "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd"
    }
}
...
[Trace - 2:10:16 AM] Received response 'textDocument/documentSymbol - (13)' in 68ms.
Result: [
    {
        "name": "web-app",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 71,
                    "character": 0
                },
                "end": {
                    "line": 75,
                    "character": 70
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "auth-constraint",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 93,
                    "character": 0
                },
                "end": {
                    "line": 93,
                    "character": 53
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "auth-method",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 104,
                    "character": 0
                },
                "end": {
                    "line": 104,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "context-param",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 112,
                    "character": 0
                },
                "end": {
                    "line": 112,
                    "character": 64
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "description",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 127,
                    "character": 0
                },
                "end": {
                    "line": 127,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "display-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 139,
                    "character": 0
                },
                "end": {
                    "line": 139,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "distributable",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 149,
                    "character": 0
                },
                "end": {
                    "line": 149,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-link",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 173,
                    "character": 0
                },
                "end": {
                    "line": 173,
                    "character": 29
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-local-ref",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 190,
                    "character": 0
                },
                "end": {
                    "line": 191,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-ref",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 208,
                    "character": 0
                },
                "end": {
                    "line": 209,
                    "character": 27
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-ref-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 225,
                    "character": 0
                },
                "end": {
                    "line": 225,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-ref-type",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 238,
                    "character": 0
                },
                "end": {
                    "line": 238,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 247,
                    "character": 0
                },
                "end": {
                    "line": 248,
                    "character": 16
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 261,
                    "character": 0
                },
                "end": {
                    "line": 261,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry-type",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 282,
                    "character": 0
                },
                "end": {
                    "line": 282,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry-value",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 296,
                    "character": 0
                },
                "end": {
                    "line": 296,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "error-code",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 303,
                    "character": 0
                },
                "end": {
                    "line": 303,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "error-page",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 311,
                    "character": 0
                },
                "end": {
                    "line": 311,
                    "character": 63
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "exception-type",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 319,
                    "character": 0
                },
                "end": {
                    "line": 319,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "extension",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 327,
                    "character": 0
                },
                "end": {
                    "line": 327,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 338,
                    "character": 0
                },
                "end": {
                    "line": 339,
                    "character": 27
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter-class",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 346,
                    "character": 0
                },
                "end": {
                    "line": 346,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter-mapping",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 363,
                    "character": 0
                },
                "end": {
                    "line": 363,
                    "character": 69
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 371,
                    "character": 0
                },
                "end": {
                    "line": 371,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "form-error-page",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 381,
                    "character": 0
                },
                "end": {
                    "line": 381,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "form-login-config",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 390,
                    "character": 0
                },
                "end": {
                    "line": 390,
                    "character": 63
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "form-login-page",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 399,
                    "character": 0
                },
                "end": {
                    "line": 399,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "home",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 411,
                    "character": 0
                },
                "end": {
                    "line": 411,
                    "character": 25
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "http-method",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 418,
                    "character": 0
                },
                "end": {
                    "line": 418,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "icon",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 427,
                    "character": 0
                },
                "end": {
                    "line": 427,
                    "character": 42
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "init-param",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 435,
                    "character": 0
                },
                "end": {
                    "line": 435,
                    "character": 61
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "jsp-file",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 443,
                    "character": 0
                },
                "end": {
                    "line": 443,
                    "character": 29
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "large-icon",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 460,
                    "character": 0
                },
                "end": {
                    "line": 460,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "listener",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 468,
                    "character": 0
                },
                "end": {
                    "line": 468,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "listener-class",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 477,
                    "character": 0
                },
                "end": {
                    "line": 477,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "load-on-startup",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 495,
                    "character": 0
                },
                "end": {
                    "line": 495,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "local",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 505,
                    "character": 0
                },
                "end": {
                    "line": 505,
                    "character": 26
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "local-home",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 514,
                    "character": 0
                },
                "end": {
                    "line": 514,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "location",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 523,
                    "character": 0
                },
                "end": {
                    "line": 523,
                    "character": 29
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "login-config",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 533,
                    "character": 0
                },
                "end": {
                    "line": 533,
                    "character": 71
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "mime-mapping",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 541,
                    "character": 0
                },
                "end": {
                    "line": 541,
                    "character": 46
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "mime-type",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 549,
                    "character": 0
                },
                "end": {
                    "line": 549,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "param-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 558,
                    "character": 0
                },
                "end": {
                    "line": 558,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "param-value",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 565,
                    "character": 0
                },
                "end": {
                    "line": 565,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "realm-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 573,
                    "character": 0
                },
                "end": {
                    "line": 573,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "remote",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 585,
                    "character": 0
                },
                "end": {
                    "line": 585,
                    "character": 27
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-auth",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 601,
                    "character": 0
                },
                "end": {
                    "line": 601,
                    "character": 29
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-ref-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 610,
                    "character": 0
                },
                "end": {
                    "line": 610,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-sharing-scope",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 625,
                    "character": 0
                },
                "end": {
                    "line": 625,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-type",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 634,
                    "character": 0
                },
                "end": {
                    "line": 634,
                    "character": 29
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-env-ref",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 653,
                    "character": 0
                },
                "end": {
                    "line": 654,
                    "character": 25
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-env-ref-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 664,
                    "character": 0
                },
                "end": {
                    "line": 664,
                    "character": 42
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-env-ref-type",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 673,
                    "character": 0
                },
                "end": {
                    "line": 673,
                    "character": 42
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-ref",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 696,
                    "character": 0
                },
                "end": {
                    "line": 697,
                    "character": 22
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "role-link",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 706,
                    "character": 0
                },
                "end": {
                    "line": 706,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "role-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 715,
                    "character": 0
                },
                "end": {
                    "line": 715,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "run-as",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 724,
                    "character": 0
                },
                "end": {
                    "line": 724,
                    "character": 43
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "security-constraint",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 732,
                    "character": 0
                },
                "end": {
                    "line": 733,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "security-role",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 752,
                    "character": 0
                },
                "end": {
                    "line": 752,
                    "character": 50
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "security-role-ref",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 768,
                    "character": 0
                },
                "end": {
                    "line": 768,
                    "character": 66
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 777,
                    "character": 0
                },
                "end": {
                    "line": 778,
                    "character": 86
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet-class",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 786,
                    "character": 0
                },
                "end": {
                    "line": 786,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet-mapping",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 794,
                    "character": 0
                },
                "end": {
                    "line": 794,
                    "character": 54
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 802,
                    "character": 0
                },
                "end": {
                    "line": 802,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "session-config",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 810,
                    "character": 0
                },
                "end": {
                    "line": 810,
                    "character": 44
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "session-timeout",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 821,
                    "character": 0
                },
                "end": {
                    "line": 821,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "small-icon",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 838,
                    "character": 0
                },
                "end": {
                    "line": 838,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "taglib",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 845,
                    "character": 0
                },
                "end": {
                    "line": 845,
                    "character": 47
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "taglib-location",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 854,
                    "character": 0
                },
                "end": {
                    "line": 854,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "taglib-uri",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 863,
                    "character": 0
                },
                "end": {
                    "line": 863,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "transport-guarantee",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 879,
                    "character": 0
                },
                "end": {
                    "line": 879,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "url-pattern",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 888,
                    "character": 0
                },
                "end": {
                    "line": 888,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "user-data-constraint",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 896,
                    "character": 0
                },
                "end": {
                    "line": 896,
                    "character": 67
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "web-resource-collection",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 907,
                    "character": 0
                },
                "end": {
                    "line": 908,
                    "character": 28
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "web-resource-name",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 916,
                    "character": 0
                },
                "end": {
                    "line": 916,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "welcome-file",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 924,
                    "character": 0
                },
                "end": {
                    "line": 924,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "welcome-file-list",
        "kind": 7,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 932,
                    "character": 0
                },
                "end": {
                    "line": 932,
                    "character": 44
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "auth-constraint/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 945,
                    "character": 0
                },
                "end": {
                    "line": 945,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "auth-method/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 946,
                    "character": 0
                },
                "end": {
                    "line": 946,
                    "character": 37
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "context-param/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 947,
                    "character": 0
                },
                "end": {
                    "line": 947,
                    "character": 39
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "description/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 948,
                    "character": 0
                },
                "end": {
                    "line": 948,
                    "character": 37
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "display-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 949,
                    "character": 0
                },
                "end": {
                    "line": 949,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "distributable/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 950,
                    "character": 0
                },
                "end": {
                    "line": 950,
                    "character": 39
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-link/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 951,
                    "character": 0
                },
                "end": {
                    "line": 951,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-local-ref/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 952,
                    "character": 0
                },
                "end": {
                    "line": 952,
                    "character": 39
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-ref/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 953,
                    "character": 0
                },
                "end": {
                    "line": 953,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-ref-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 954,
                    "character": 0
                },
                "end": {
                    "line": 954,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "ejb-ref-type/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 955,
                    "character": 0
                },
                "end": {
                    "line": 955,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 956,
                    "character": 0
                },
                "end": {
                    "line": 956,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 957,
                    "character": 0
                },
                "end": {
                    "line": 957,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry-type/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 958,
                    "character": 0
                },
                "end": {
                    "line": 958,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "env-entry-value/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 959,
                    "character": 0
                },
                "end": {
                    "line": 959,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "error-code/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 960,
                    "character": 0
                },
                "end": {
                    "line": 960,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "error-page/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 961,
                    "character": 0
                },
                "end": {
                    "line": 961,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "exception-type/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 962,
                    "character": 0
                },
                "end": {
                    "line": 962,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "extension/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 963,
                    "character": 0
                },
                "end": {
                    "line": 963,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 964,
                    "character": 0
                },
                "end": {
                    "line": 964,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter-class/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 965,
                    "character": 0
                },
                "end": {
                    "line": 965,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter-mapping/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 966,
                    "character": 0
                },
                "end": {
                    "line": 966,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "filter-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 967,
                    "character": 0
                },
                "end": {
                    "line": 967,
                    "character": 37
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "form-error-page/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 968,
                    "character": 0
                },
                "end": {
                    "line": 968,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "form-login-config/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 969,
                    "character": 0
                },
                "end": {
                    "line": 969,
                    "character": 43
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "form-login-page/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 970,
                    "character": 0
                },
                "end": {
                    "line": 970,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "home/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 971,
                    "character": 0
                },
                "end": {
                    "line": 971,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "http-method/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 972,
                    "character": 0
                },
                "end": {
                    "line": 972,
                    "character": 37
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "icon/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 973,
                    "character": 0
                },
                "end": {
                    "line": 973,
                    "character": 30
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "init-param/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 974,
                    "character": 0
                },
                "end": {
                    "line": 974,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "jsp-file/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 975,
                    "character": 0
                },
                "end": {
                    "line": 975,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "large-icon/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 976,
                    "character": 0
                },
                "end": {
                    "line": 976,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "listener/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 977,
                    "character": 0
                },
                "end": {
                    "line": 977,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "listener-class/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 978,
                    "character": 0
                },
                "end": {
                    "line": 978,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "load-on-startup/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 979,
                    "character": 0
                },
                "end": {
                    "line": 979,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "local/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 980,
                    "character": 0
                },
                "end": {
                    "line": 980,
                    "character": 31
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "local-home/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 981,
                    "character": 0
                },
                "end": {
                    "line": 981,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "location/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 982,
                    "character": 0
                },
                "end": {
                    "line": 982,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "login-config/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 983,
                    "character": 0
                },
                "end": {
                    "line": 983,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "mime-mapping/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 984,
                    "character": 0
                },
                "end": {
                    "line": 984,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "mime-type/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 985,
                    "character": 0
                },
                "end": {
                    "line": 985,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "param-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 986,
                    "character": 0
                },
                "end": {
                    "line": 986,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "param-value/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 987,
                    "character": 0
                },
                "end": {
                    "line": 987,
                    "character": 37
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "realm-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 988,
                    "character": 0
                },
                "end": {
                    "line": 988,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "remote/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 989,
                    "character": 0
                },
                "end": {
                    "line": 989,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-auth/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 990,
                    "character": 0
                },
                "end": {
                    "line": 990,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-ref-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 991,
                    "character": 0
                },
                "end": {
                    "line": 991,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-sharing-scope/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 992,
                    "character": 0
                },
                "end": {
                    "line": 992,
                    "character": 43
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "res-type/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 993,
                    "character": 0
                },
                "end": {
                    "line": 993,
                    "character": 34
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-env-ref/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 994,
                    "character": 0
                },
                "end": {
                    "line": 994,
                    "character": 42
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-env-ref-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 995,
                    "character": 0
                },
                "end": {
                    "line": 995,
                    "character": 47
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-env-ref-type/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 996,
                    "character": 0
                },
                "end": {
                    "line": 996,
                    "character": 47
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "resource-ref/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 997,
                    "character": 0
                },
                "end": {
                    "line": 997,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "role-link/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 998,
                    "character": 0
                },
                "end": {
                    "line": 998,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "role-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 999,
                    "character": 0
                },
                "end": {
                    "line": 999,
                    "character": 35
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "run-as/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1000,
                    "character": 0
                },
                "end": {
                    "line": 1000,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "security-constraint/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1001,
                    "character": 0
                },
                "end": {
                    "line": 1001,
                    "character": 45
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "security-role/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1002,
                    "character": 0
                },
                "end": {
                    "line": 1002,
                    "character": 39
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "security-role-ref/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1003,
                    "character": 0
                },
                "end": {
                    "line": 1003,
                    "character": 43
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1004,
                    "character": 0
                },
                "end": {
                    "line": 1004,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet-class/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1005,
                    "character": 0
                },
                "end": {
                    "line": 1005,
                    "character": 39
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet-mapping/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1006,
                    "character": 0
                },
                "end": {
                    "line": 1006,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "servlet-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1007,
                    "character": 0
                },
                "end": {
                    "line": 1007,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "session-config/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1008,
                    "character": 0
                },
                "end": {
                    "line": 1008,
                    "character": 40
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "session-timeout/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1009,
                    "character": 0
                },
                "end": {
                    "line": 1009,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "small-icon/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1010,
                    "character": 0
                },
                "end": {
                    "line": 1010,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "taglib/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1011,
                    "character": 0
                },
                "end": {
                    "line": 1011,
                    "character": 32
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "taglib-location/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1012,
                    "character": 0
                },
                "end": {
                    "line": 1012,
                    "character": 41
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "taglib-uri/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1013,
                    "character": 0
                },
                "end": {
                    "line": 1013,
                    "character": 36
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "transport-guarantee/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1014,
                    "character": 0
                },
                "end": {
                    "line": 1014,
                    "character": 45
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "url-pattern/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1015,
                    "character": 0
                },
                "end": {
                    "line": 1015,
                    "character": 37
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "user-data-constraint/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1016,
                    "character": 0
                },
                "end": {
                    "line": 1016,
                    "character": 46
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "web-app/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1017,
                    "character": 0
                },
                "end": {
                    "line": 1017,
                    "character": 33
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "web-resource-collection/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1018,
                    "character": 0
                },
                "end": {
                    "line": 1018,
                    "character": 49
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "web-resource-name/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1019,
                    "character": 0
                },
                "end": {
                    "line": 1019,
                    "character": 43
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "welcome-file/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1020,
                    "character": 0
                },
                "end": {
                    "line": 1020,
                    "character": 38
                }
            }
        },
        "containerName": ""
    },
    {
        "name": "welcome-file-list/@id",
        "kind": 20,
        "location": {
            "uri": "file:///Users/fbricon/Downloads/web-app_2_3.dtd",
            "range": {
                "start": {
                    "line": 1021,
                    "character": 0
                },
                "end": {
                    "line": 1021,
                    "character": 43
                }
            }
        },
        "containerName": ""
    }
]

But vscode orders it differently, elements first, in some random order apparently, then the attlists, almost in the correct order: first and last have been swapped, all others in between keep their positions.
screen shot 2018-12-05 at 2 22 20 am

@jrieken any idea why?

@jrieken
Copy link

jrieken commented Dec 5, 2018

what does "outline > ... > sort by" say?

@angelozerr
Copy link
Contributor

@fbricon as I tried to explain you and @jrieken suggest you, I think it's your preferences of your outline which is sorted by type I think:

image

@fbricon
Copy link
Contributor Author

fbricon commented Dec 5, 2018

@angelozerr @jrieken ok it was sorted by type. Which I suspected. I completely overlooked that menu. It's just that the secondary sort seems unpredictable, but that looks like a VS Code thing.
Anyways, there's nothing more to do on the server side I think.

@jrieken
Copy link

jrieken commented Dec 5, 2018

secondary sort seems unpredictable, but that looks like a VS Code thing.

Yeah, we have issue for that on our end. 🤞 that we fix that next milestone...

@fbricon
Copy link
Contributor Author

fbricon commented Dec 10, 2018

Outline is still borked with this dtd :
screen shot 2018-12-10 at 10 39 34 am

@fbricon fbricon reopened this Dec 10, 2018
@fbricon
Copy link
Contributor Author

fbricon commented Dec 10, 2018

Also ATTLIST seem to be lost when elements have the same name, in http://java.sun.com/dtd/web-app_2_3.dtd :

<!ATTLIST auth-constraint id ID #IMPLIED>
<!ELEMENT auth-constraint (description?, role-name*)>

probably because it's the same symbol type

@angelozerr
Copy link
Contributor

@fbricon I think the problem is because XMLScanner is not enough tolerant. I hope @NikolasKomonen work in #261 will improve that.

As I try to explain we need a really more tolerant parser. @NikolasKomonen it should be cool if you could see if your #261 fixes the problem and otherwise try to fix it. If you have no time, I will see it.

@fbricon
Copy link
Contributor Author

fbricon commented Dec 10, 2018

@angelozerr the dtd's are not malformed, so it's not (only) a matter of being fault tolerant or not.
I get the same problem when applying #261

@angelozerr
Copy link
Contributor

@fbricon it's because our parser desn't take care of possibility of ATTLIST parsing. The problem comes from

<!ATTLIST dataset
	xmlns:xlink CDATA #FIXED "http://www.w3.org/XML/XLink/0.9"
	subject CDATA "astronomy"
>

Our dtd parser consider that this ATTLIST is not valid (althoug it is valid). So we need 2 fixes:

  • the first fix is to become more tolerant (even if our parser cannot parsed it, it must not break the other content)
  • the second fix is to parse correctly this ATTLIST

@fbricon
Copy link
Contributor Author

fbricon commented Dec 10, 2018

Also ATTLIST seem to be lost when elements have the same name, in http://java.sun.com/dtd/web-app_2_3.dtd :

<!ATTLIST auth-constraint id ID #IMPLIED>
<!ELEMENT auth-constraint (description?, role-name*)>

probably because it's the same symbol type

Ok so now I see that ATTLIST are shown as children of ELEMENTs. So that's ok.

@angelozerr
Copy link
Contributor

In other words, it's not a problem with outline (XML DocumentSymbol provider), but a problem with XML Scanner. In other words it's the issue #231

Outline shows the problem but it's not the outline which must be fixed, it's the XMLScanner (issue #231)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working DTD symbols
Projects
None yet
Development

No branches or pull requests

4 participants