Считается ли пара имя-значение атрибута в XML двумя узлами, интерпретируемыми XPATH? - PullRequest
2 голосов
/ 20 декабря 2011

В следующей статье http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT3.html говорится, что XPATH считает следующие узлы узлами:

  • Root
  • Элемент
  • Текст
  • Атрибут
  • Комментарий
  • Инструкция обработки
  • Пространство имен

Я хочу знать, является ли атрибут «id» и его значение »2 'считаются двумя разными узлами?Например, <name id="2">text</name>

Или текстовые узлы - это просто «данные» http://www.w3.org/XML/Datamodel.html между элементами?Моя интуиция подсказывает мне, что в этом примере XPATH считает, что в этом примере 4 узла - элемент name, атрибут id, текстовое значение 2 и текстовое значение text.

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Атрибут узла имеет имя и значение.Они не являются отдельными узлами.Следующий XML:

<name id="2">text</name>

... представляет три узла: 1) элемент с именем name;2) дочерний узел name, который является текстовым узлом;3) узел атрибута с именем id и значением 2.

с спецификацией :

Узел атрибута имеет расширенный-name и строковое значение.

и более поздние версии:

Узел атрибута имеет строковое значение.Строковое значение является нормализованным значением, как указано в Рекомендации XML [XML].Атрибут, нормализованное значение которого является строкой нулевой длины, специально не обрабатывается: он приводит к узлу атрибута, значение строки которого является строкой нулевой длины.

1 голос
/ 20 декабря 2011

Строковое значение узла атрибута является просто строкой - это не сам узел .

Любое строковое значениеузел не следует путать с любым текстовым узлом .Текстовый узел является дочерним элементом узла элемента, и он сам имеет строковое значение.

Часто строковое значение текстового узла не является строкой, с которой мы представлены в сериализации XML-документа, дляПример:

<t>M &amp; M</t>

строковое значение текстового узла, выбранного /*/text(), не "M &amp; M", это:

M & M
...