Icecast包含一个基于xmlsoft的libxslt的XSLT实现。
我想知道它是否支持node-set()函数,最好也支持其他纯web环境:
遗憾的是,icecast中的XSLT处理器只能通过icecast进程的Web界面进行Web访问(因此命令行上没有xsltproc)。更糟糕的是:XSLT错误的日志记录有限(当您做错事情时,icecast进程通常会死亡)。
我正在运行icecast 2.3.2,因为这是最新的基于Windows的版本(目前还没有针对Windows的2.3.3版本),它有libxslt。dll日期为2008年。DLL中没有版本号,我只能提供以下内容(请参阅底部的XSLT代码):
Version: 1.0
Vendor: libxslt
Vendor URL: http://xmlsoft.org/XSLT/
我尝试运行David Carlisle的博客文章The EXSLT node-set函数中指出的“如何以独立于平台的方式使用node-set函数?”中提到的节点集检测。
从输出来看,我认为这是失败的:
icemaster@localhost972990localhost00EarthIcecast 2.3.2Sun, 23 Jun 2013 20:02:19 W. Europe Daylight Time202200ice-samplerate=44100;ice-bitrate=64;ice-channels=264StationGenre6424410000http://localhost:8000.....
通过web界面中的XSL文件查找的最佳方法是什么?
版本脚本:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text" encoding="UTF-8" />
<xsl:template match="/">
Version: <xsl:value-of select="system-property('xsl:version')" />
Vendor: <xsl:value-of select="system-property('xsl:vendor')" />
Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')" />
</xsl:template>
</xsl:stylesheet>
我尝试的节点集脚本:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exslt="http://exslt.org/common"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="exslt msxsl">
<xsl:output
omit-xml-declaration="no"
method="html"
indent="yes"
encoding="UTF-8" />
<msxsl:script language="JScript" implements-prefix="exslt">
this['node-set'] = function (x) {
return x;
}
</msxsl:script>
<xsl:variable name="x">
<y/>
</xsl:variable>
<xsl:template match="x">
<html>
<head><title>test exslt node set</title></head>
<body>
<xsl:apply-templates select="exslt:node-set($x)/*"/>
</body>
</html>
</xsl:template>
<xsl:template match="y">
<p>node set!</p>
</xsl:template>
</xsl:stylesheet>
简短的回答
icecast中的libxslt支持xt:node-set()函数
在下面,它由xsltFunctionNodeSet()函数在中实现。
通用答案
我使用function system属性基于CSTUG书目XSLT创建了一个解决方案。
如果这确实是正确的方法,请发表评论。
CSTUG代码处理这些node-set()函数:
我还添加了对这些的支持:
icecast的输出:
Version: 1.0
Vendor: libxslt
Vendor URL: http://xmlsoft.org/XSLT/
node-set(): xt:node-set()
使用的XSLT:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exslt="http://exslt.org/common"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:xalanc="http://xml.apache.org/xalanc"
xmlns:xt="http://www.jclark.com/xt"
xmlns:saxon6="http://icl.com/saxon"
extension-element-prefixes="exslt msxml xalanc xt saxon6"
exclude-result-prefixes="exslt msxml xalanc xt saxon6"
>
<xsl:output method="text" encoding="UTF-8" />
<xsl:template match="/">
<xsl:text>
Version: </xsl:text>
<xsl:value-of select="system-property('xsl:version')" />
<xsl:text>
Vendor: </xsl:text>
<xsl:value-of select="system-property('xsl:vendor')" />
<xsl:text>
Vendor URL: </xsl:text>
<xsl:value-of select="system-property('xsl:vendor-url')" />
<!--
Prefixes used for node-set()
exslt: EXSLT aware processors (Saxon, xsltproc, Xalan-J, jd.xslt, 4XSLT)
msxml: MSXML
xalanc: Xalan-C, Xalan-J 2.6.x
xt: XT, libxslt
saxon6: Saxon 6
-->
<xsl:text>
node-set(): </xsl:text>
<xsl:choose>
<xsl:when test="function-available('exslt:node-set')">
<xsl:text>exslt:node-set()</xsl:text>
</xsl:when>
<xsl:when test="function-available('msxml:node-set')">
<xsl:text>msxml:node-set()</xsl:text>
</xsl:when>
<xsl:when test="function-available('xalanc:nodeset')">
<xsl:text>xalanc:nodeset()</xsl:text>
</xsl:when>
<xsl:when test="function-available('xt:node-set')">
<xsl:text>xt:node-set()</xsl:text>
</xsl:when>
<xsl:when test="function-available('saxon6:node-set')">
<xsl:text>saxon6:node-set()</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>EXSLT:node-set not found!</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
本文向大家介绍Python实现检测服务器是否可以ping通的2种方法,包括了Python实现检测服务器是否可以ping通的2种方法的使用技巧和注意事项,需要的朋友参考一下 好想在2014结束前再赶出个10篇博文来,~(>_<)~,不写博客真不是一个好兆头,至少说明对学习的欲望和对知识的研究都不是那么积极了,如果说这1天的时间我能赶出几篇精致的博文,你们信不信,哈哈,反正我是信了。。。 python
本文向大家介绍python 多线程实现检测服务器在线情况,包括了python 多线程实现检测服务器在线情况的使用技巧和注意事项,需要的朋友参考一下 需要ping一个网段所有机器的在线情况,shell脚步运行时间太长,用python写个多线程ping吧,代码如下: 效果如下: 平一个网段只要2.7s左右,够快!!! 再给大家分享一个检测外网服务器的方法及代码 经常使用python检测服务器是否能pi
在之前的几篇教程中,我们讲的是如何查询和Mutation操作,这些都是在客户端那边所进行的,那么服务器这边是如何处理这些请求的呢?这就是这篇教程所要说的东西了. 准备工作 克隆库: git clone https://github.com/zhouyuexie/learn-graphql 安装依赖: cd learn-graphql && npm install cd learn-graphql
本文向大家介绍Python实现批量检测HTTP服务的状态,包括了Python实现批量检测HTTP服务的状态的使用技巧和注意事项,需要的朋友参考一下 用Python实现批量测试一组url的可用性(可以包括HTTP状态、响应时间等)并统计出现不可用情况的次数和频率等。 类似的,这样的脚本可以判断某个服务的可用性,以及在众多的服务提供者中选择最优的。 需求以及脚本实现的功能如下: 默认情况下,执行脚本会
我是ActiveMQ Artemis的新手,正在尝试配置主从设置。在我的场景中,我使用一个主从。 Master的如下所示: slave的如下所示: master.log是 从日志: