我有以下樹形文件結構:獲取文件的路徑 - XSLT
ROOT (ID 0000)
- FILE 1 (ID 0001)
- FILE 2 (ID 0002)
- - FILE 2.1 (ID 0003)
- - FILE 2.2 (ID 0004)
- - - FILE 2.2.1 (ID 0005)
- FILE 3 (ID 0006)
所有這些都具有以下結構的XML文件:
<asset id="0002" name="FILE 2">
<child_asset_rel child_asset="0003"/>
<child_asset_rel child_asset="0004"/>
</asset>
這樣,元素<child_asset_rel>
只要主要元素有孩子就會出現。我們還可以看到,在XML中,我們只能檢測資產的「直接子女」,即每個文件不知道它是否有孫子,所以我們必須在每個文件中查找子女。
輸入是根文件的XML。這是因爲如下:
<asset id="0000" name="ROOT">
<child_asset_rel child_asset="0001"/>
<child_asset_rel child_asset="0002"/>
<child_asset_rel child_asset="0006"/>
</asset>
另外我有一個功能get-asset('ID')
返回資產的XML文件,我們傳遞的參數的ID。
例如:get-asset(0002)將返回上面的XML示例。
我要的是讓出如下的完整路徑資產名稱的列表:
<file href="FILE 1"/>
<file href="FILE 2/FILE 2.1"/>
<file href="FILE 2/FILE 2.2/FILE 2.2.1"/>
<file href="FILE 3"/>
正如你可以在上面的例子中看到,根元素一定不能包含在路徑。
我已經嘗試了很多解決方案,但我似乎無法獲得我想要的結果。我嘗試在遞歸函數中使用for-each
,但結果不是預期的結果。
您使用的是哪個版本的XSLT,您能向我們展示函數get-asset的代碼嗎?這是一個擴展函數還是一個XSLT函數?什麼是樣式表的輸入,一個資產ID? –
XSLT的版本是2.0,很抱歉,由於許可原因,我無法向您顯示「獲取資產」功能的代碼。這些函數只接收一個ID並用該ID返回該文件的XML。樣式表的輸入是XML,它是我上面提到的所有結構的根。我編輯條目以澄清輸入問題。 –
爲什麼輸入XML不包含''儘管在問題開始處給出的結構顯示'FILE 1(ID 0001)'。 –