Javascript XSLT将节点传递到CDATA JS
我有以下xmlJavascript 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
<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>