- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以在 xsl 条件中包含“外部”变量(在我的例子中为 javascript)。
在我的示例中,我使用一些 javascript 获取 map 上的坐标,即我的 xMax var。我想在“xsl:if”中使用这个 xMax 变量来查找纬度低于或等于 xMax 的所有“条目”。
我的脚本摘录:
var cpt = 0;
var xMax = map.getBounds().getNorthEast().lat();
<xsl:for-each select="entries/entry">
<xsl:if test="latitude <= xMax">
cpt++;
</xsl:if>
</xsl:for-each>
alert(cpt);
我找到了“msxsl:script”元素,我尝试了这个:
<msxsl:script language="JScript" implements-prefix="user">
function getXMax(){
var xMax = map.getBounds().getNorthEast().lat();
return xMax;
}
</msxsl:script>
并用以下方式调用它:
<xsl:value-of select='user:getXMax(.)'/>
但似乎不起作用。(我还包括了
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://localhost:8080/Projet/map"
在 xsl:stylesheet 中)
如果有人知道如何将我的 js var 传递到条件中或如何将 js var 解析为 xslt var,感谢您的帮助!
最佳答案
按照您希望的方式混合 JavaScript 和 XSLT 是不可能的。
如果使用 XSLT 将 XML 转换为 HTML 和 JavaScript,则此时生成的 JavaScript 实际上并未执行。就 XSLT 而言,它只是输出一串字符,该字符串稍后将被(由浏览器)解析为 JavaScript。当浏览器开始处理 JavaScript 时,XSLT 将早已被遗忘。它的处理方式与您自己在记事本中输入 JavaScript 没有什么不同。
正如您所展示的,您可以在 XSLT 中使用 JavaScript 函数,但这与您输出的 JavaScript 完全独立,并且只能由 XSLT 在执行过程中使用。
因此,您需要采用稍微不同的方法。您可以通过 JavaScript 执行 XSLT 转换,并为此 XSLT 转换传递参数。但是,这可能不一定是理想的方法。
您可以采取的一种方法是将相关 XML(entry 元素)输出为 JSON,然后您可以在 JavaScript 中访问它。因此,纬度值小于xMax变量的逻辑完全在 JavaScript 中检查。
例如,您的 XSLT 可能如下所示...
<script>
var cpt = 0;
var xMax = map.getBounds().getNorthEast().lat();
var coordinates = [
<xsl:for-each select="entries/entry">
<xsl:if test="position() > 1">,</xsl:if>
{
"lat":<xsl:value-of select="latitude" />,
"long":<xsl:value-of select="longitude" />
}
</xsl:for-each>
];
for (var i = 0; i < coordinates.length; i++)
{
if (coordinates[i].lat < xMax)
cpt++;
}
alert(cpt);
</script>
然后,给定这个 XML
<entries>
<entry>
<latitude>1</latitude>
<longitude>2</longitude>
</entry>
<entry>
<latitude>3</latitude>
<longitude>4</longitude>
</entry>
</entries>
这会生成看起来像这样的 JavaScript
<script>
var cpt = 0;
var xMax = map.getBounds().getNorthEast().lat();
var coordinates = [
{
"lat":1,
"long":2
}
,
{
"lat":3,
"long":4
}
];
for (var i = 0; i < coordinates.length; i++)
{
if (coordinates[i].lat < xMax)
cpt++;
}
alert(cpt);
</script>
关于javascript - 将 javascript 变量传递给 xsl 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20829773/
我知道这可能看起来像一个愚蠢/新手问题,但我对 XSLT 还很陌生(尽管我开始接受它并了解它的功能)。 什么时候适合使用xsl:if,什么时候适合使用xsl:choose/xsl:when? 当我想要
在根据节点是否存在设置变量后,我尝试输出变量的文字字符串值。我认为条件检查逻辑是正确的。但它没有输出值... su
我目前正试图使用 XSL 将 XML 文档转换为 HTML。 XML 文档使用 namespace ,我对 XSL 并没有太多经验,更不用说 namespace 了。基本上我想做的就是抓取 s:t
你能否在嵌套的 xsl:when 中嵌套 xsl:if,例如:
我正在 W3Schools 上使用 XSLT 代码示例:https://www.w3schools.com/xml/xsl_client.asp 我有这部分代码在 IE 中使用基本的 xslt 处理.
我正在尝试从 XSLT 样式表动态生成 XSLT 文档。原则上这当然有效,但我没有让命名空间工作。我想让生成的 XSLT 元素以“xsl”前缀为前缀: 而不是 我玩过 xsl:element 的
我们客户的要求是提供带圆角的 PDF 表格。我只有 Apache FOP 处理器可供我使用,它不支持圆角属性。它也不支持 float ,因此无法向左和向右 float 圆形图像。 你对如何做到这一点有
我有一个关于 xsl 的问题。我有 1 个巨大的 xsl 文件(+4000 行 :p),我想将文件分成不同的部分。我使用 xsl 文件来映射 BizTalk 中的一些架构,如果我将它分成几部分,它的性
我的 FO 流程有问题,因为在一页上,标题显示在一页的末尾并在之后的页面上继续。如何向 title-element 添加属性,以便标题始终显示在同一页面上,这意味着:没有分页符。 谢谢! /丹尼 最佳
我想知道是否有人可以帮助我或指出正确的方向。我目前有从 XML 文件返回正确的元素有些麻烦。我只是尝试获取我拥有的大型 XML 文件的精简版本,以便输出另一个 XML 文件(不是很多教程都在使用的 H
我想动态创建具有动态名称的变量以供以后在我的转换中使用,但为此我需要动态生成 XSL,然后在同一脚本中运行它。 这只是我正在寻找的粗略伪代码示例。
我正在学习 XML 以及如何使用 XSL 文件。在 XSL 文件中,我发现了以下术语: xsl:template match="/" 这代表什么?我可以用什么代替 /?我可以编写 table 或任何其
是否可以将 xsl: 放到 XSL 样式表中的 XSL 标签? 例如,可以: 输入为: 编辑:样式表中包含 HTML 和 XML 节点。 谢谢,罗斯 最佳答案 实际上,您可以通过将 XSLT(“h
有什么办法不离开后第一 匹配但继续检查其他条件? 最佳答案 我相信这是一个不。正如规范所说: The content of the first, and only the first, xsl:whe
在构建 XSL 文档时,我遇到了以下问题。我想保留原文中的换行符,所以我设置了linefeed-treatment="preserve" .然而,这显然也意味着它保留了文本内容之外和实际 xml 元素
我有一个 XSL 样式表,我需要使用 xsl:function 添加一些自定义字符串操作。但是我在尝试找出在我的文档中放置该函数的位置时遇到了麻烦。 我的 XSL 简化看起来像这样,
我有以下 XML: Picture 1 Picture 2 Picture 3 虽然此 XSL 执行了预期的操作(输出第一张图片的属性):
我希望 column-count="2"只出现在页面的某些部分。 ]>
我正在为我的 XML 内容生成 xsl-fo 文档,然后将此内容传递给将生成 PDF 的第三方 DLL 之一。我需要以 45 度角显示测试。如何实现这一目标? 谢谢 最佳答案 我很确定您不能在纯 XS
在我的情况下,我必须在两个表格行之间提供高达 0.5cm 的空间。我怎样才能做到这一点。 代码:: 我用过了:
我是一名优秀的程序员,十分优秀!