Как заставить MSXMLDOMDocument.selectSingleNode работать с пространством имен - PullRequest
2 голосов
/ 29 июня 2011

У меня классическая среда ASP с MSXMLDOMDocument. Загруженный xml - это xsl:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
  xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes"
  exclude-result-prefixes="xhtml xsl fn xs xdt">

</xsl:stylesheet>

Я пытаюсь получить версию таблицы стилей, в данном примере это значение "2.0". Я хотел использовать XPath для этой цели, но моя проблема в том, что я не знаю, как добавить пространство имен xsl в движок xpath в классическом asp.

Вопрос: Как получить атрибут версии таблицы стилей xsl: с помощью MSXMLDOMDocument в классическом asp?

1 Ответ

2 голосов
/ 29 июня 2011

AFAIR, есть способ зарегистрировать пространство имен, чтобы вы могли использовать зарегистрированный префикс в выражениях XPath.

Однако, в вашем случае это не обязательно .

Просто используйте:

/*/@version

Здесь мы используем тот факт, что xsl:stylesheet является верхним элементом XML-документа (и что любой правильно сформированный XML-документ должен иметь ровно один верхний элемент) - поэтому мы можем указать этот верхний элемент, как указано выше - без указав его имя вообще.

Нам не нужно указывать какое-либо пространство имен для атрибута version, поскольку в XPath любое имя без префикса находится в «no namespace», даже если для XML-документа определено пространство имен по умолчанию.

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