我正在尝试在我的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之间存在这种差异的可能原因吗?
答案 0 :(得分:1)
请尝试将其作为变量的内容:
<xsl:variable name="myVar" select="'xpath to the node'"/>
这可确保将内容视为文字字符串。可能氧气足够宽容而忽略它而你的Java(正确)不是 - 这是一个错误,因为在引用的字符串中你应该放一个表达式。
外部双引号不参与形成表达式,只有内部表达式。这样,您就可以在变量中表达字符串 '1+2'
或 sum 1+2
。