2016-02-19 2 views
0

У меня есть рабочий сценарий, но я не знаю, почему работает конкретный XPath. Я перебираю три статьи из базы данных, это TEI XML. Для всех из них мне нужно поместить концевые сноски в конце конкретной статьи (третий в этом случае).Подстановочный знак в начале XPath для XSLT (по нескольким статьям)

<xsl:for-each select="//tei:text"> 
    <xsl:apply-templates select="tei:body"/> 
    <xsl:apply-templates select="*//tei:note"/> 
</xsl:for-each> 

Если я использую только //tei:note, отмечает третьей статьи присутствуют во всех статьях. Если я использую *//tei:note, он работает так, как ожидалось. Я привязываю заметки к некоторому контексту или так?

+0

Ваш вопрос непонятен. Пожалуйста, разместите небольшой, но полный пример. –

ответ

1

//tei:note возвращает все note элементы в текущем документе XML, игнорируя элемент контекста. Обычно вы ставите точку (.) в начале, чтобы сделать ее относительно элемента контекста.

Что касается вашего рабочего XPath, в основном * получает прямые дочерние элементы любого имени из текущего контекстного элемента. Итак, да, вы можете сказать, что вы - 'anchoring' последующий XPath, //tei:note, чтобы направить дочерний элемент текущего элемента contex, указав *//tei:note.

+0

Спасибо большое, это помогло, я был очень близок! –

Смежные вопросы