2017-01-23 10 views
0

サクソンHEは/ Xpathの「businessTypeです」によって企業のリストの私のxmlファイルをフィルタリングするために2XPathは:[開始-と(...)]

私は合格使い方に「すべてのものを含める」パラメータを渡します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"/> 

これは、ただ1つの林例。同じ形式がxslルーチンで複数回使用されます。

「すべてを返す」ワイルドカードパラメータを$ BusinessTypeに渡すことはできますか?私は*.*を試しました。私はRegExに精通していません。

+0

'starts-with'は正規表現ではまったく動作しません。パラメータを設定しなかった場合にすべてのDetails要素を返すかどうか、または特定のパターンと一致させるかどうかは、現在達成したいことが明確ではありません。 –

答えて

1

starts-withファンクションhttps://www.w3.org/TR/xquery-operators/#func-starts-withは、正規表現ではなく文字列でのみ機能します。ただし、空のシーケンスまたは空の文字列を2番目の引数として使用すると、関数はtrueを返し、単に<xsl:param name="BusinessType" select="()"/>を定義し、フィルタしない場合はパラメータを設定せず、述語starts-with(BusinessType,$BusinessType)は常にtrueです。

正規表現を使用する場合は、matches関数を使用する必要があります。 matches(BusinessType,$BusinessType)ここで、開始文字に一致するパターンは、パラメータを^.*に設定した場合に一致します。

+0

つまり、 "java.exe" ... BusinessType = "" 'をコマンドラインとして試してみてください。すべての文字列は '' "で始まるので。 – LarsH

+0

ちょうど私が望むようにBusinessType = ""&worksを試しました。私は選択オプションが空であることに気付かなかった。 それ以外のサイトでは、select = "''"が使用されています。違いはありますか? – DaveF