Xpath 将参数从脚本传递到XSL
他将XSLT2与最新的Saxon版本一起使用 我试图将多个坐标参数从脚本传递到XSL,以便根据位置边界框过滤结果 脚本:Xpath 将参数从脚本传递到XSL,xpath,parameter-passing,xslt-2.0,Xpath,Parameter Passing,Xslt 2.0,他将XSLT2与最新的Saxon版本一起使用 我试图将多个坐标参数从脚本传递到XSL,以便根据位置边界框过滤结果 脚本: java -jar saxon9he.jar -s:litter_bins.xml -o:"bins.xml" -xsl:"Split xml coords.xsl" Coord_2=51.3725 Coord_4=51.3751 Coord_1=-2.3615 Coord_3=-2.3572 XSL: 结果: <?xml version="1.0" encoding
java -jar saxon9he.jar -s:litter_bins.xml -o:"bins.xml" -xsl:"Split xml coords.xsl" Coord_2=51.3725 Coord_4=51.3751 Coord_1=-2.3615 Coord_3=-2.3572
XSL:
结果:
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="JOSM">
<node id="-102973" visible="true" lat="51.37283499216" lon="-2.359890029">
<tag k="date_creat" v="17/07/2014 07:59:04 AM UTC"/>
<tag k="form_recor" v="888"/>
</node>
<snip...>
</osm>
我误解了什么?尝试为参数声明数字类型,例如
或
。当然,您的样式表需要声明xmlns:xs=”http://www.w3.org/2001/XMLSchema“
作为根元素上的命名空间声明
如果没有数字类型,我认为比较将是两个xs:untypedAtomic
值,然后是需求
如果两个原子值都是xs:untypedAtomic的实例,则
值被强制转换为xs:string类型
然后负数的字符串比较无法给出所需的结果。如果向参数添加类型声明,例如
(需要名称空间声明xmlns:xs=”,是否有效http://www.w3.org/2001/XMLSchema“
当然可以)?尝试首先使用xsl:message
或类似工具检查参数值是否从命令shell正确传递到Saxon。正确,如果没有声明类型,参数将被视为xs:untypedAtomic值,并将作为字符串进行比较。
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="JOSM"/>
<xsl:template match="node[@lat[ . < 51.3725 or . > 51.3751 ] or @lon[ . < -2.3615 or . > -2.3572]]"/>
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="JOSM">
<node id="-102973" visible="true" lat="51.37283499216" lon="-2.359890029">
<tag k="date_creat" v="17/07/2014 07:59:04 AM UTC"/>
<tag k="form_recor" v="888"/>
</node>
<snip...>
</osm>