我有一個正在工作的XSLT 2或3進程,其中將單個字符串作爲參數傳遞到XSL模板。對於這個任務,我傳遞一個姓氏,用於在多個XML文檔中找到所有<person>
元素,其中它的子元素是<nL>
,最後一個元素與我傳遞的參數匹配。這工作,但我想修改我的XPATH表達式,以便能夠傳遞逗號分隔參數。例如,我現在可以通過surname =「Johnson」,但希望能夠通過surname =「Johnson,Johnston」如何匹配XPATH中謂詞變量中的值
我在java中使用最新的Saxon處理器。我調用轉換與
java net.sf.saxon.Transform -s:all-sources.xml -xsl:xsl/index-person-param.xsl surname="Johnson"
全sources.xml中的其他XML文件的XML格式化列表。
我將只包含我的代碼的一小部分,除非需要更多的代碼。這可能是一個簡單的XPATH問題,我只是不明白。
目前我的模板匹配之前,我有這個參數聲明
<xsl:param name="surname" as="xs:string" required="yes"/>
然後我發現所有的匹配<person>
元素與下面的變量
<xsl:variable name="nameMatch" select="document(/files/file/@filename)//person[nL = $surname]"/>
這工作時,$姓變量是一個單詞的字符串。我如何修改上面的謂詞,以便$ surname可以包含用逗號分隔的兩個或多個單詞?
我已經嘗試過使用tokenize()
和進行了一些更改,但我仍未找到可行的解決方案。 謝謝, 邁克爾
你有沒有嘗試過這些:https://stackoverflow.com/questions/6357166/how-to-compare-against-multiple-strings-in-xslt – Lesiak
我通過你提供的線程搜索並找到了解決方案。我已將'select =「文檔(/ files/file/@ filename)// person [nL = $ surname]」'更改爲'select =「document(/ files/file/@ filename)// person [matches (nL,$姓氏)]「'這給了我想要的結果。非常感謝 – Sawtooth67