0

我正在尝试在我的 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,则此代码可以正常工作。但是当我通过我的 servlet 运行它时 javax.xml.transform.Transformer.transform(Source xmlSource, Result outputTarget) throws TransformerException,我得到了这个: googletag.pubads().setTargeting('label', ' ');

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

4

1 回答 1

1

试试这个作为你的变量的内容:

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

这确保内容被视为文字字符串。可能 Oxygen 足够宽容,可以忽略它,而你的 Java (正确)不是——这是一个错误,因为在引用的字符串中你应该放一个expression

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

于 2013-08-14T19:42:36.437 回答