Лучшая практика для выбора XML-элемента с пространством имен заключается в том, чтобы указать пространство имен, , а не, чтобы игнорировать его с помощью какого-либо механизма «подстановочных знаков».
Для совместимых процессоров XPath, всегда есть механизм, позволяющий связывание префикса пространства имен (например: ab
) в пространстве имен URI (например: http://something.com/xyz
). Также не обязательно использовать один и тот же префикс пространства имен (ab
), который используется в исходном XML; требуется только URI пространства имен (http://something.com/xyz
). Единственная проблема, однако, в том, что XPath сам не имеет механизма привязки префиксов пространства имен к URI пространства имен. Как это сделать, зависит от возможностей, предлагаемых библиотекой (например: libxml2, javax.xml.xpath и т. Д.) Или языка хостинга (например, XSLT).
Чтобы обеспечить чистый ответ XPath или иногда из-за (обычно нерационального) отвращения к пространствам имен, вы иногда увидите используемый шаблон. Общим шаблоном является использование local-name()
, чтобы ссылаться только на локальное имя (например: SomeProcessResponse
) независимо от пространства имен.Проблема заключается в том, что он не только обходит префикс пространства имен (например: ab
), но и обходит URI пространства имен (http://something.com/xyz
), а URI пространства имен является неотъемлемой частью имени и важной частью связывания других объектов с элементом , К таким другим объектам относятся, например, валидация и сопоставления классов OO.
Так что, да, есть шаблонные механизмы уворачиваясь пространствами имен, но лучшая практика заключается в использовании средства на хостинге языке/библиотеке связать префиксы пространства имен с пространствами имен URI,, не, чтобы избежать имен через групповые символы.
Мы используем javascript –