Используйте определенные имена полей, поэтому если кто-то изменяет таблицу на Вас, Вы не получаете неожиданные результаты. На предмете: ВСЕГДА определяйте имена полей при выполнении вставки поэтому, если необходимо добавить столбец позже, Вы не должны возвратиться и зафиксировать свою программу и изменить базу данных одновременно в производственном выпуске.
Я подозреваю, что у вас есть пространство имен по умолчанию, объявленное в вашей таблице стилей. Это эффективно поместит элементы
Итак, если у вас есть что-то вроде этого вверху вашей таблицы стилей:
<xsl:stylesheet xmlns="http://example.com"...>
Тогда вам также нужно будет добавить это:
<xsl:stylesheet xmlns="http://example.com" xmlns:x="http://example.com"...>
А затем используйте префикс «x» в выражении XPath:
<xsl:for-each select="msxsl:node-set($rtf)/x:item-list/x:item">
<xsl:value-of select="@id"/>
</xsl:for-each>
Сообщите мне, помогло ли это. Я здесь только догадываюсь.
Мне это кажется нормальным.
Вы правильно объявили пространство имен msxsl для функций расширения? Примерно так:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
Я предполагаю, что вы используете здесь процессор Microsoft XSLT
В отличие от MSXSL, XslCompiledTransform
предоставляет функцию node-set ()
, где это должно быть - в общем пространстве имен EXSLT :
<xsl:stylesheet xmlns:exslt="http://exslt.org/common">
...
<xsl:for-each select="exslt:node-set($rtf)/item-list/item">
...
</xsl:stylesheet>