脚本标记中的XSL

时间:2010-11-30 09:40:46

标签: javascript xslt

我需要在脚本标记之间输出XSL,以便将值动态输出到JavaScript中。

这是代码,但我无法让它工作。我想将position()添加到脚本中,以便输出类似o.write("flash1");的内容,并增加每个嵌入的Flash文件的数量。任何帮助表示赞赏。

<div>
  <xsl:attribute name="id">iframe-content<xsl:value-of select="position()"/></xsl:attribute>
  <div id="flash"></div><!--/flash-->
  <script type="text/javascript">
    // <![CDATA[ 
    var so = new SWFObject("swf/video2.swf", "showreel", "720", "484", "8", "#ffffff");
    so.addParam("quality", "high");
    so.addParam("allowScriptAccess", "always");
    so.addParam("wmode", "transparent");
    so.addVariable("videoURL", "http://www.masterseries.co.uk/public/TempFiles/Concrete1.flv");
    so.write("flash");
    // ]]>
  </script>
</div>

1 个答案:

答案 0 :(得分:0)

你很接近(你不能像你那样容易地使用CDATA):

<!-- note that you don't need xsl:attribute here -->
<div id="iframe-content-{position()}">
  <div id="flash"></div><!--/flash-->
  <script type="text/javascript">
    var so = new SWFObject("swf/video2.swf", "showreel", "720", "484", "8", "#ffffff");
    so.addParam("quality", "high");
    so.addParam("allowScriptAccess", "always");
    so.addParam("wmode", "transparent");
    so.addVariable("videoURL", "http://www.masterseries.co.uk/public/TempFiles/Concrete1.flv");
    so.write("flash<xsl:value-of select='position()' />");
  </script>
</div>

您可以使用

<xsl:output cdata-section-elements="script"/>

在输出中创建CDATA部分。但是,您必须确保输入脚本源是正确的XML编码,即没有裸<&>个字符,但是&lt;,{{1 },&amp;等价物。