首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XSL模板中包含带有冒号的JS语法

在XSL模板中包含带有冒号的JS语法
EN

Stack Overflow用户
提问于 2021-09-03 19:31:09
回答 2查看 48关注 0票数 0

我正在尝试使用Photo Sphere Viewer JS library为嵌入式360照片创建一个XSL模板(由Saxon处理器使用)。我遇到了一个问题,其中基本嵌入代码的一部分会导致模板中的致命错误:

我的示例XSL的相关部分:

代码语言:javascript
复制
<xsl:template name="myPanoramaTemplate">
<xsl:variable name="image" select="div/[@data-name='PanoImage']/img/@src"/>

<div id="viewer" style="width: 100vw; height: 100vh;"></div>
<script>
  var viewer = new PhotoSphereViewer.Viewer({
    container: document.querySelector('#viewer'),
    panorama: '{$image}'
  });
</script>
<xsl:template>

这一直导致以下问题:

代码语言:javascript
复制
Fatal Error: QName cannot end with colon: {container:}
Fatal Error: QName cannot end with colon: {panorama:}

我尝试通过xsl:text、xsl:value-of和xsl:copy-of输出脚本文本,但没有成功。我需要找到一种方法让XSL成功地处理冒号,或者找到另一种方法来利用JS库,避免在这种上下文中使用冒号。有没有人遇到过类似的情况,以及任何解决方案或变通方法?

编辑:对于一个没有任何XSL变量的更简单的例子,我尝试了一个没有任何变量的测试模板。标记了与冒号有关的相同致命错误。

代码语言:javascript
复制
<xsl:template name="myPanoramaTemplate">
<script>
  var viewer = new PhotoSphereViewer.Viewer({
    container: document.querySelector('#viewer'),
    panorama: 'path/to/panorama.jpg'
  });
</script>
</xsl:template>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-03 22:21:43

作为Martin建议的替代方案,可以通过将大括号加倍来避开大括号。

这里发生的情况是,大括号之间的文本被解析为XPath表达式,这会失败,因为它不是有效的XPath语法。你可以这样写:

代码语言:javascript
复制
<script>
  var viewer = new PhotoSphereViewer.Viewer({{
    container: document.querySelector('#viewer'),
    panorama: '{$image}'
  }});
</script>
票数 1
EN

Stack Overflow用户

发布于 2021-09-03 20:04:36

您可能希望/需要在文本结果元素script上应用xsl:expand-text="no"

代码语言:javascript
复制
<script xsl:expand-text="no">
  var viewer = new PhotoSphereViewer.Viewer({
    container: document.querySelector('#viewer'),
    panorama: '<xsl:value-of select="$image"/>'
  });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69049801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档