Обновление : ОП предоставил свой код.
Используйте
<xsl:for-each select="x:schema/x:element">
Вместо :
<xsl:for-each select="schema/element">
Поиск / чтение о «пространстве имен по умолчанию в XPath». Это F A Q
Это преобразование :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:value-of select="/x:schema/x:a/x:b/x:c"/>
</xsl:template>
</xsl:stylesheet>
при применении к этому документу XML :
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<a>
<b>
<c>d</c>
</b>
</a>
</schema>
дает желаемый результат :
d
Объяснение : Любое имя без префикса в выражении XPath всегда считается "без пространства имен". Если документ XML имеет пространство имен по умолчанию, то любой элемент этого документа находится в пространстве имен по умолчанию (а не в «пространстве имен нет»). Поэтому для такого документа без префикса имена не выбирают ни одного узла - потому что ни один узел в этот документ не находится в пространстве имен.