Xpath:将'include everything'参数传递给[starts-with(...)]

时间:2017-01-23 15:20:10

标签: regex xml xslt xpath wildcard

使用Saxon HE / Xpath 2

要通过'BusinessType'过滤我的商家列表的xml文件,我将参数(即“餐馆”或“学校”)传递给xsl文件:

"java.exe" -jar "saxon9he.jar" -s:FHRS.xml -xsl:FHRS.xsl BusinessType="Restaurant"

BusinessType类别名称很长,所以要保存输入我将参数传递给starts-with

<xsl:param name="BusinessType"/>
<xsl:variable name="ID_New" select="//Details[starts-with(BusinessType,$BusinessType)]/FHRSID"/> 

这只是一个例子。在xsl例程中多次使用相同的格式。

是否可以将'return everything'通配符参数传递给$ BusinessType?我试过了*.*。我不熟悉RegEx。

1 个答案:

答案 0 :(得分:1)

starts-with函数https://www.w3.org/TR/xquery-operators/#func-starts-with仅适用于字符串,不适用于正则表达式。然而,作为第二个参数的空序列或空字符串意味着函数返回true,因此您可以简单地定义<xsl:param name="BusinessType" select="()"/>然后,如果您不想过滤,则不要设置参数谓词starts-with(BusinessType,$BusinessType)总是正确的。

如果您想使用正则表达式,则需要使用matches函数,例如matches(BusinessType,$BusinessType)如果您将参数设置为^.*,则匹配任何起始字符的模式。