классический asp, не распознающий функцию xPath contains () - PullRequest
0 голосов
/ 03 ноября 2011

Я использую классические ASP, XML и xPath для выбора некоторых данных, и я пытаюсь сделать выбор в следующем xml, где узел id_attribut содержит «xc».Поэтому я хотел бы выбрать только первые 2 атрибута.

мой xpath:

"//attribut[contains(id_attribut,"xc")]"

, но ASP выдает мне ошибку:

msxml3.Ошибка DLL '80004005' Неизвестный метод.// attribut [-> содержит (id_attribut <-, "xc")] /products/list_products.asp, строка 54 </p>

Is содержит () недопустимая функция для xPath в классическом ASP(не ASP.net)?

У меня есть следующий XML:

<attributes>    
<attribut>
     <id_attribut>xc_elite</id_attribut>
     <level>4</level>
     <pty>1</pty>
     <parent>xc</parent>
   </attribut>
<attribut>
     <id_attribut>xc_performance</id_attribut>
     <level>4</level>
     <pty>2</pty>
     <parent>xc</parent>
</attribut>
<attribut>
     <id_attribut>alp_elite</id_attribut>
     <level>4</level>
     <pty>1</pty>
     <parent>alp</parent>
</attribut>
</attributes>

Спасибо за любую помощь !!

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

Кажется, это не XPath по умолчанию для вас. Следует указать SelectionLanguage свойство . XPath используется по умолчанию для DomDocument версии 4.0 +.
Попробуйте создать объект как:

Set oXml = Server.CreateObject("MSXML2.DomDocument.4.0")

или

Set oXml = Server.CreateObject("MSXML2.DomDocument")
oXml.SetProperty "SelectionLanguage", "XPath"
'oXml.Load ...
Set oNodes = oXml.selectNodes("//attribut[contains(id_attribut, 'xc')]")
'..
0 голосов
/ 03 ноября 2011

MSXML3 не известен качеством своих сообщений об ошибках - попробуйте скомпилировать его с другим процессором, чтобы получить лучшую диагностику.

Я подозреваю, что проблема заключается в использовании неэкранированных кавычек вокруг второго аргумента.Если вы используете двойные кавычки в качестве разделителя атрибутов, вы должны использовать одинарные кавычки вокруг строковых литералов в выражении XPath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...