Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
Javascript XSLT将节点传递到CDATA JS_Javascript_Xml_Xslt - Fatal编程技术网

Javascript XSLT将节点传递到CDATA JS

Javascript XSLT将节点传递到CDATA JS,javascript,xml,xslt,Javascript,Xml,Xslt,我有以下xml <AAA> <BBB>Total</BBB> </AAA> 全部的 使用xsl:copy of标记将其转换为以下xslt,因为我想使用xml在js中创建xml文档 <xsl:template match="/"> <![CDATA[ function myFunc() { xmlStr = ']]><xsl:copy-of select="/"/><![CD

我有以下xml

<AAA>
  <BBB>Total</BBB>
</AAA>

全部的
使用xsl:copy of标记将其转换为以下xslt,因为我想使用xml在js中创建xml文档

<xsl:template match="/">
  <![CDATA[
    function myFunc() {
      xmlStr = ']]><xsl:copy-of select="/"/><![CDATA[';
    }
  ]]>
</xsl:template>

输出如下所示

    function myFunc() {
      xmlStr = '<AAA>
  <BBB>Total</BBB>
</AAA>';
    }
函数myFunc(){
xmlStr='1
全部的
';
}
JS不喜欢这样,因为行尾缺少分号。 如何修复xsl以获得以下结果:

function myFunc() {
  xmlStr = '<AAA><BBB>Total</BBB></AAA>';
}
函数myFunc(){
xmlStr='总计';
}
我尝试了normalize-space()和translate(),但它们从xml中删除了标记

谢谢

使用:



在复制之前,它将删除元素
AAA
中的所有空白。不过,您必须小心,因为它也会从
AAA
下的文本节点中删除任何内部间距,所以这有点过分了。如果您有一些需要保留空间的元素,请将它们列为
xsl:preserve space
元素中的异常。但是从你的例子来看,我不认为这会成为一个问题。

@davomarti:确保你的XML不能包含任何单引号,否则你的JavaScript会崩溃。尤其要确保XML不包含用户生成的数据,因为这种方法具有很高的XSS风险。最好是通过AJAX分别从服务器请求XML,而不是直接将其注入JS代码中。Tomalak,这很有道理,但我在一个框架内工作,我能做的最好的事情就是通过xsl获取xml。
<xsl:strip-space elements="AAA"/>
<xsl:template match="/">
<![CDATA[
  function myFunc() {
    xmlStr = ']]><xsl:copy-of select="AAA"/><![CDATA[';
  }
]]>
</xsl:template>