Ошибка XQuery при выполнении преобразования xslt - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть рабочая таблица стилей, которая отлично работает с saxon. Теперь я использую простой XQuery:

transform:transform($xmlNode, $xslNode, ()),  

Чтобы сделать то же самое, он всегда жалуется на синтаксис в моей таблице стилей, который:

<xsl:template match="CrossReference ">
     <xsl:variable name="currentNode" select="//*[@Target=@pointer]"/>
     <xsl:if test="$currentNode/name()!= 'Figure'">

            ...
      </xsl:if>
</xsl:template>

Он всегда жалуется на строку, и появляется сообщение «Исключительная ситуация при компиляции таблицы стилей: неизвестный тип узла: имя». Кажется, он не может понять имя функции ()?

Может ли кто-нибудь помочь? Спасибо.

1 Ответ

2 голосов
/ 21 апреля 2011

Вы не можете использовать вызов функции как часть пути (т.е. после косой черты /) в XPath 1.x. Чтобы обойти это, встроенные функции XPath обычно принимают набор узлов в качестве своего аргумента и значение по умолчанию ., если аргумент пропущен. То есть name() - это сокращение от name(.).

Попробуйте вместо этого:

<xsl:if test="name($currentNode) != 'Figure'">
...