VS代码语法突出显示包含javascript的XML 编辑-解决方案:
我从@Tomalak解决方案中获得了一些灵感。但是,我没有使用XSLT,而是使用VS代码替换正则表达式来注释我的XML代码:VS代码语法突出显示包含javascript的XML 编辑-解决方案:,javascript,xml,visual-studio-code,syntax-highlighting,Javascript,Xml,Visual Studio Code,Syntax Highlighting,我从@Tomalak解决方案中获得了一些灵感。但是,我没有使用XSLT,而是使用VS代码替换正则表达式来注释我的XML代码: <!-- comment out xml tags : ^(\s*(\]\]>)?<\/?\w*>(<!\[CDATA\[)?)\s*$ --> <!-- comment out xml tags : //$1 --> <!-- uncomment xml tags : ^\/\/(\s*(\]\]>)?
<!-- comment out xml tags : ^(\s*(\]\]>)?<\/?\w*>(<!\[CDATA\[)?)\s*$ -->
<!-- comment out xml tags : //$1 -->
<!-- uncomment xml tags : ^\/\/(\s*(\]\]>)?<\/?\w*>(<!\[CDATA\[)?)\s*$ -->
<!-- uncomment xml tags : $1 -->
由于我的文件是XML,所以javascript的语法不会突出显示。所以我的代码是灰色的,类似于注释的样子
是否有可以突出显示我的代码的扩展?如果这对我有帮助的话,我也愿意修改突出显示规则。你可以解决这个问题。此XSLT模板将XML转换为JS代码
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" />
<xsl:template match="*[normalize-space(text()[1])]">
<xsl:value-of select="concat('//xml:<', name(), '><![CDATA[')" />
<xsl:apply-templates select="node() | *" />
<xsl:value-of select="concat('//xml:]]></', name(), '>')" />
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="concat('//xml:<', name(), '>')" />
<xsl:apply-templates select="node() | *" />
<xsl:value-of select="concat('//xml:</', name(), '>')" />
</xsl:template>
</xsl:stylesheet>
我非常怀疑是否有插件可以处理这个用例。。。像这样的混合语言通常是未知领域。这似乎是相关的:冒着声明显而易见的风险:如果您的平台支持,一个解决方法是执行一个包含JS文件的文件,或者使用模板将JS文件内容注入XML。很棒的解决方案!我从你的回答中得到了一些启发,并使用VS代码正则表达式工具做了基本相同的事情(注释掉/取消注释XML标记)@CodyMaxie如果有这样的事情,你也可以将其作为构建管道的一部分进行自动化。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" />
<xsl:template match="*[normalize-space(text()[1])]">
<xsl:value-of select="concat('//xml:<', name(), '><![CDATA[')" />
<xsl:apply-templates select="node() | *" />
<xsl:value-of select="concat('//xml:]]></', name(), '>')" />
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="concat('//xml:<', name(), '>')" />
<xsl:apply-templates select="node() | *" />
<xsl:value-of select="concat('//xml:</', name(), '>')" />
</xsl:template>
</xsl:stylesheet>
<JS>
<MY_FUNCTION><![CDATA[
// comment here
let my_function = () => console.log("Hello World");
]]></MY_FUNCTION>
<LESS_THAN><![CDATA[
let less_than = (a,b) => a < b;
]]></LESS_THAN>
<GREATER_THAN><![CDATA[
let greater_than = (a,b) => a > b;
]]></GREATER_THAN>
</JS>