2013-07-08 2 views
0

Я пытаюсь использовать метод tokenize в вызове SelectNodes (""), чтобы отфильтровать некоторые вещи.Метод XPath tokenize(), не распознанный msxml3.dll

У меня есть кое-что вдоль линий:

<nodes> 
    <node colors="RED,BLUE,YELLOW"/> 
</nodes> 

И мой XPath как таковой:

nodes/node[not(empty(tokenize("GREEN,YELLOW,PURPLE", ",") intersect tokenize(@colors, ",")))] 

Просто, у меня есть два, разделенных запятыми список, один в качестве атрибута, и один как «фильтр» для атрибутов. Я хочу выбрать все узлы, где @colors содержит где-то одно из слов внутри "GREEN,YELLOW,PURPLE".

Я думал, что решение для него с этим XPath, но мне кажется, либо: A: Я сделал что-то не так, или B: версия XML DOM документа я использую не поддерживает tokenize()

XPath выше, в вызове SelectNodes() выдает сообщение об ошибке с сообщением msxml3.dll: Unknown method. ", Затем указывая на метод tokenize().

Я попытался сделать setProperty (" SelectionLanguage "," XPath "), но это также не помогло решить проблему.

Есть ли способ для меня выполнить эквивалентный выбор XPath, не прибегая к связке and contains(@colors, "GREEN") and contains(@colors, "YELLOW")...?

+0

'empty',' tokenize' и 'intersect' - все функции XPath 2.0, а MSXML предоставляет только XPath 1.0. – JLRishe

ответ

0

Как говорит JLRishe, msxml не поддерживает XPath 2.0.

В зависимости от среды, в которой вы находитесь, возможно, есть стороннее программное обеспечение, которое может использоваться как XPath 2.0, так и XQuery 1.0 (что является надмножеством XPath 2.0).

Программное обеспечение Microsoft от Microsoft получает очень устаревшие данные, и в течение 10 лет было мало новых разработок. Пришло время рассмотреть альтернативы.