我正在为 DocBook 5 XML 制作一个捆绑包,其中经常包含以下内容:
<section>
<title>This is my awesome Java Class called <classname>FunBunny</classname></title>
<para>FunBunny is your friend.</para>
</section>
我希望部分的标题出现在窗口底部的功能弹出窗口中。我使用以下捆绑项目部分工作。
语言语法:
{ patterns = (
{ name = 'meta.tag.xml.docbook5.title';
match = '<title>(.*?)</title>';
/* patterns = ( { include = 'text.xml'; } ); */
},
{ include = 'text.xml'; },
);
}
具有范围选择器的设置/首选项项目meta.tag.xml.docbook5.title
:
{ showInSymbolList = 1;
symbolTransformation = 's/^\s*<title\s?.*?>\s*(.*)\s*<\/title>/$1/';
}
这样做的最终效果是文档中的所有标题元素都匹配并出现在函数弹出窗口中,不包括<title></title>
基于symbolTransformation
.
我会对这么多功能感到满意,因为其他有趣的东西(如数字)往往有正式的标题,但有一个问题。
标签的内容title
不会根据text.xml
语言语法的其余部分进行解析和识别。上述语言语法中被注释掉的patterns
部分并没有解决这个问题的预期效果——它把所有东西都放在了meta.tag.xml.docbook5.title
范围内。
有没有办法在这里得到我想要的?也就是说,元素的内容title
,可选地仅用于section
标题,在函数弹出窗口中并被解析器识别为正常的 XML 内容。