Xpath 将参数从脚本传递到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

他将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="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[ . &lt; 51.3725 or . &gt; 51.3751 ] or @lon[ . &lt; -2.3615 or . &gt; -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>