2012-02-06 35 views
2

我有一種奇怪的兩難....的XPath 1.0返回的字符串作爲節點列表

首先,我使用XPath 1.0只有堅持,這就是該系統仍在使用,所以雖然古老的過程中,我'愛用2.0,這不會發生。

我有一個節點作爲這樣的: <Column Name="Letters">A, B, C, D, E, F, G, H, I</Column>

我想XPath來回報這些信件的節點列表。 這有可能以任何方式?是否有可能返回從字符串中出現的字母數派生的節點列表? 是否有可能遍歷字符串,並以某種方式保留字符串中下一個節點的位置的索引?

歡迎任何建議,替代方案和建議。

感謝先進!

編輯: 如果有9個如上所示的「字母」節點的實例,是否可以使用(假設我已經刪除所有空格/逗號):substring(Letters,1,1)第一個值,那麼當程序遍歷下一個節點時,檢索子字符串(Letters,2,1)等,但不是靜態索引,它會返回類似於:substring(Letters,node2outof9,1)?

編輯:EX)

<Column Name="Letters">A, B, C, D, E, F, G, H, I</Column> <Column Name="Letters">A, B, C, D, E, F, G, H, I</Column> <Column Name="Letters">A, B, C, D, E, F, G, H, I</Column> ...

說我有以下僞代碼:在節點列表(

的foreach節點列@名稱=快報) 子(節點, index?,1)

是否有xpath函數或屬性我可以使用t o給我索引哪個節點出於我當前遍歷的節點列表?

我想通過使用當前節點的索引來獲取我需要的字母的解決方法。所以我回復了「信件」9次,每次一個,每次一個。

我知道這是一個奇怪的要求,所以我會很感激任何幫助......

UPDATE: 問題得到了解決,但必須使用一個替代方案來顯然這不能僅僅用做用XPATH。感謝所有的建議和建議。回答Jakrabbit提供的關於我提供的奇怪信息的足夠接近的解決方案。

+0

什麼是處理XPath?通常,您可以使用XSLT或編程語言。 – 2012-02-06 15:28:14

+0

嗨馬克 - 我無法訪問此處理程序,我所看到的只是XML,並且必須根據系統需要編寫足夠的XPath。在這種情況下,xml將我需要的數據存儲爲一串字母,我需要逐個給出這些字母。所以,如果可能的話,它必須在XPath中完成,而不是在處理程序中完成。感謝您的迴應! – JWiley 2012-02-06 15:33:29

回答

1

您可以使用類似:

fn:tokenize(Column[@Name="Letters"]/text(), ', ') 

,會給你的信件的節點集。然後你可以通過索引var訪問它。

fn:tokenize(Column[@Name="Letters"]/text(), ', ')[i] 

http://www.w3.org/TR/xpath-functions/#func-tokenize

更新:我認爲這將做同樣的事情XPath 1.0中,只要沒有其他分隔符,結果實際上是字母(1個字符長)

substring(translate(/Column[@Name="Letters"]/text(), ', ', ''), i, 1) 
+0

這只是XPath 2.0。 – 2012-02-07 22:48:08

+0

哦,對不起,你是對的。 – JohnnyK 2012-02-07 22:50:49

+1

我讚賞Jakrabbit的迴應,但不能像節點那樣使用子字符串函數,並且我將無法訪問處理程序代碼來引用索引。 – JWiley 2012-02-08 12:53:19

0

XPath選擇現有節點,它不創建任何新節點。因此,無論是XPath 1.0還是2.0都不重要,如果要創建包含字母的新節點的列表,而XPath不能單獨使用這些字母,則需要使用XSLT或XQuery等主機語言來創建新節點。

+0

謝謝你的迴應,這是很好的知道!我已經編輯了我的帖子,並附加了一個問題/替代方案 – JWiley 2012-02-06 16:03:46

+0

那麼你的附加問題對我來說沒什麼意義,你發佈的XML有'Column'元素,而不是'Letters'元素,因此即使是'substring(Letters,1,1)'也沒有意義,因爲它試圖取一個不存在的'Letters'元素的子串。 – 2012-02-06 16:19:53

+0

對於混淆感到抱歉,我的意思是「信件」欄內的文字。因此,如果有9個實例,我可以使用xpath確定我當前在哪個實例?我將盡可能詳細地解釋我的帖子...... – JWiley 2012-02-06 16:27:57

相關問題