Eclipse WTP 的 HTML Editor 或 JSP Editor ,会根据鼠标所处的上下文环境,显示不同的内容助理( ContentAssist )。若需要开发一个具有类似功能的编辑器,有必要对 Document 的划分有个了解。
以下是开发中记录和整理的一些内容,供参考用。
JSP Document
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <%@ page contentType="text/html; charset=UTF-8" %> <script type="text/javascript"> </script> <style type="text/css">.r .r .r</style> </head> <body> <!--Comment --> </body> </html> |
例 1
<!DOCTYPE
html PUBLIC "-//W3C//DTD
XHTML 1.0 strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
名称 → 类型 : regionStartIndex - regionEndIndex/ regionEndIndex( 包含空格 )
ContextRegion → XML_DECLARATION_OPEN : 0-2 ⇒ [<!]
ContextRegion → XML_DOCTYPE_DECLARATION : 2-9/10 ⇒ [DOCTYPE ]
ContextRegion → XML_DOCTYPE_NAME : 10-14/15 ⇒ [html ]
ContextRegion → XML_DOCTYPE_EXTERNAL_ID_PUBLIC : 15-21/22 ⇒ [PUBLIC ]
ContextRegion → XML_DOCTYPE_EXTERNAL_ID_PUBREF : 22-56/57 ⇒ [“//W3C...” ]
ContextRegion → XML_DOCTYPE_EXTERNAL_ID_SYSREF : 57-108 ⇒ [“http...”]
ContextRegion → XML_DECLARATION_CLOSE : 108-109 ⇒ [>]
例 2
<%@
page contentType="text/html; charset=UTF-8" %>
名称 → 类型
ContextRegion → JSP_DIRECTIVE_OPEN ⇒ [<%@ ]
ContextRegion → JSP_DIRECTIVE_NAME ⇒ [page ]
AttributeNameRegion → XML_TAG_ATTRIBUTE_NAME ⇒ [contentType]
AttributeEqualsRegion → XML_TAG_ATTRIBUTE_EQUALS ⇒ [=]
AttributeValueRegion → XML_TAG_ATTRIBUTE_VALUE ⇒ [“…” ]
ContextRegion → JSP_DIRECTIVE_CLOSE ⇒ [%>]
例 3
<style
type="text/css">
名称 → 类型 : regionStartIndex - regionEndIndex/ regionEndIndex( 包含空格 )
TagOpenRegion → XML_TAG_OPEN : 0-1 ⇒ [<]
TagNameRegion → XML_TAG_NAME : 1-6/8 (注:包含两个空格) ⇒ [style ]
AttributeNameRegion → XML_TAG_ATTRIBUTE_NAME : 8-12 ⇒ [type]
AttributeEqualsRegion → XML_TAG_ATTRIBUTE_EQUALS : 12-13 ⇒ [=]
AttributeValueRegion → XML_TAG_ATTRIBUTE_VALUE : 13-23 ⇒ [“text/css”]
TagCloseRegion → XML_TAG_CLOSE : 23-24 ⇒ [>]
例 4
<style
type="text/css">.r
.r
.r
</style>
名称 → 类型
ForeignRegion → BLOCK_TEXT ⇒ [3 个 ”.r” ]
例 5
</style>
名称 → 类型
EndTagOpenRegion → XML_END_TAG_OPEN ⇒ [</]
TagNameRegion → XML_TAG_NAME ⇒ [style]
TagCloseRegion → XML_TAG_CLOSE ⇒ [>]
例 6
</style>|__
此区域
__|
<head>
名称 → 类型
XMLContentRegion → XML_CONTENT ⇒ [ 文字显示的区域 ]
例 7
<!--Comment
-->
名称 → 类型
ContextRegion → XML_COMMENT_OPEN ⇒ [<!--]
ContextRegion → XML_COMMENT_TEXT ⇒ [Comment ]
ContextRegion → XML_COMMENT_CLOSE ⇒ [-->]
参考:
org.eclipse.wst.html.ui.internal.contentassist.HTMLContentAssistProcessor#computeCompletionProposals(…)
org.eclipse.wst.xml.core.internal.regions.DOMRegionContext.java