Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS代码语法突出显示包含javascript的XML 编辑-解决方案:_Javascript_Xml_Visual Studio Code_Syntax Highlighting - Fatal编程技术网

VS代码语法突出显示包含javascript的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*(\]\]>)?

我从@Tomalak解决方案中获得了一些灵感。但是,我没有使用XSLT,而是使用VS代码替换正则表达式来注释我的XML代码:

<!-- 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:&lt;', name(), '&gt;&lt;![CDATA[')" />
        <xsl:apply-templates select="node() | *" />
        <xsl:value-of select="concat('//xml:]]&gt;&lt;/', name(), '&gt;')" />
    </xsl:template>
    
    <xsl:template match="*">
        <xsl:value-of select="concat('//xml:&lt;', name(), '&gt;')" />
        <xsl:apply-templates select="node() | *" />
        <xsl:value-of select="concat('//xml:&lt;/', name(), '&gt;')" />
    </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:&lt;', name(), '&gt;&lt;![CDATA[')" />
        <xsl:apply-templates select="node() | *" />
        <xsl:value-of select="concat('//xml:]]&gt;&lt;/', name(), '&gt;')" />
    </xsl:template>
    
    <xsl:template match="*">
        <xsl:value-of select="concat('//xml:&lt;', name(), '&gt;')" />
        <xsl:apply-templates select="node() | *" />
        <xsl:value-of select="concat('//xml:&lt;/', name(), '&gt;')" />
    </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>