2012-02-21 8 views
3

Привет У меня есть сомнения относительно XPath.Разрешение запроса Xpath

Мой XML-файл выглядит следующим образом.

<?xml version="1.0" encoding="UTF-8"?> 

<name xmlns="http://localhost/book" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://localhost/book books.xsd"> 
Java and XML 
</name> 

здесь запрос XPath и его результат

/* - возвращает элемент "имя"

/*/text() - возвращает текст "Java и XML"

/name - нет результата

/name/text() - нет результатов

Почему указание имени не дает результата?

+0

это возможно потому, что 'name' узел пропустил имен. Как вы используете запрос XPath в XSL-файле или приложении? Можете ли вы предоставить дополнительную информацию? –

ответ

1

Это потому, что элемент name указан в http://localhost/book. Поэтому в запросе XPath вы должны указать его. Как правило, вы должны перейти на пространство имен XML двигателя и префикс, то опрашивать XML, используя полное квалифицированное имя, а именно:

/ns:name/text() 

Однако вы можете использовать другой метод, определяющее пространство имен в запросе, то есть:

/*[local-name() = 'name' and namespace-uri() = 'http://localhost/book'] 
+0

/ns: name/text() - это сообщение о том, что он не может разрешить ns.I изменил xmlns = "http: // localhost/book" на xmlns: ns = "http: // localhost/book" в моем xml file –

+0

@GaneshP. Это потому, что вы должны передавать эту информацию в свой XML-движок, другими словами, ваш XML-движок должен знать, как соотнести пространство имен с префиксом. –

+0

Спасибо Кирилл. Я на самом деле использую редактор xml Editorix. Поэтому должен быть каким-то образом указывать его в редакторе. –