<xsl:template match="//interfaces/interface[@name='management']/inet-address">
...
</xsl:template>
Почему это не работает, несмотря на то, что у меня установлено пространство имен по умолчанию?
Это один из самых часто задаваемых вопросов в любом списке XSLT и / или XPath.
XPath рассматривает любое нефиксированное имя как принадлежащее «без пространства имен» - независимо от того, что пространство имен по умолчанию может быть определено и находится в области действия.
Цитировать спецификацию W3C XPath 1.0 :
" QName в тесте узла раскрывается в расширенное имя с использованиемобъявления пространства имен из контекста выражения. Аналогичным образом выполняется расширение для имен типов элементов в начальных и конечных тегах, за исключением того, что пространство имен по умолчанию, объявленное с помощью xmlns, не используется: если QName не имеет префикса, то URI пространства именis null"
Поэтому приведенное выше правило шаблона соответствует элементам, которые не находятся в" пространстве имен ", но элементы документа XML находятся в пространстве имен "urn:jboss:domain:1.1"
, поэтому не являютсяодин узел мав соответствии с вышеуказанным правилом.