如何在javascript块中使用xsl变量

时间:2013-08-14 19:24:30

标签: xslt

我正在尝试在我的xslt文件中的javascript块中使用xsl变量,而我正处于我的智慧结束。

这是XSLT(为公众消费而编辑):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:output method="html" indent="yes"/>
    <xsl:template match="a">
         <xsl:variable name="myVar" select="xpath to the node"/>

    <script type='text/javascript'>

            googletag.cmd.push(function() {
        ...
      googletag.pubads().setTargeting('label', '<xsl:value-of select="$myVar"/>');
            googletag.enableServices();
            });

  </script> 

    </xsl:template>
</xsl:stylesheet>

如果我在Oxygen中转换XML,这段代码运行正常。但是当我通过使用javax.xml.transform.Transformer.transform(Source xmlSource, Result outputTarget) throws TransformerException的servlet运行它时,我得到了这个: googletag.pubads().setTargeting('label', ' ');

任何人都可以提出Oxygen和我的servlet之间存在这种差异的可能原因吗?

1 个答案:

答案 0 :(得分:1)

请尝试将其作为变量的内容:

<xsl:variable name="myVar" select="'xpath to the node'"/>

这可确保将内容视为文字字符串。可能氧气足够宽容而忽略它而你的Java(正确)不是 - 这是一个错误,因为在引用的字符串中你应该放一个表达式

外部双引号不参与形成表达式,只有内部表达式。这样,您就可以在变量中表达字符串 '1+2' sum 1+2