Я подозреваю, что проблема вызвана другим meta
тегом, один со 'another item'
в качестве значения атрибута name
.
Официальная схема X HTML говорит, что атрибут content
может содержать любую строку, но атрибут name
является так называемым xs:NMTOKEN
. xs: NMTOKEN не допускает пробелы в значении.
Ваше выражение пути обращается к атрибуту name
тегов meta
. MarkLogi c необходимо извлечь значение этого атрибута, чтобы можно было сравнить его со строкой 'foo'
. Однако в MarkLogi c предварительно загружено несколько XML схем общих стандартов. Он распознает пространство имен и пытается получить типизированное значение, основанное на официальной схеме, и будет жаловаться, если значение не соответствует.
Я думаю, у вас есть несколько вариантов:
- использовать допустимые значения атрибута имени (может быть вне вашего контроля)
- убрать пространство имен x html (звучит как перебор)
- редактировать выражение пути для явного приведения значения имени в строку, используя что-то вроде:
*:meta[string(@name)='foo']/@content
Примечание: выражения индекса пути не должны начинаться с root документа. Вы можете думать о них как о шаблонах совпадений в XSLT.
HTH!