2017-02-21 6 views
0

В файле XML, у меня есть некоторые части коды, которые выглядят следующим образом:XPath для достижения всех узлов, которые равны текущему?

<index indexName="Mots-matière"> 
    <term anchor="d0e7624">apprentissage automatique</term> 
</index> 

Так, например, есть много <term>apprentissage automatique</term> элементов для которого я пытаюсь собрать атрибут @anchor.

Каков наилучший способ выбора всех узлов, которые соответствуют текущему?

Я имею в виду что-то вроде этого, но я что-то пропустила:

<xsl:for-each select="current() = //term"> 
    <xsl:value-of select="term/@anchor"/> 
</xsl:for-each> 

Как я могу это сделать?

ответ

1

Я думаю, что синтаксис вы ищете это ..

<xsl:for-each select="//term[. = current()]"> 
     <xsl:value-of select="@anchor"/> 
</xsl:for-each> 

Обратите внимание, как вам нужно будет только выбрать атрибут @anchor в этом случае, так как вы будете расположены на term элемента в xsl:for-each ,

Конечно, это будет работать только в том случае, если ваш текущий узел совпадает со значением, которое вы хотите.

В качестве альтернативы вы можете использовать xsl:key. В верхней части таблицы стилей определяют ключ как так ...

<xsl:key name="terms" match="term" use="." /> 

Тогда вы можете сделать это ...

<xsl:for-each select="key('terms, current())"> 
     <xsl:value-of select="@anchor"/> 
</xsl:for-each> 
+0

Большое спасибо. –

+0

Большое спасибо. К сожалению, я допустил ошибку, текущий узел - это тот, у кого есть значение, которое я хочу. Я начну с этого синтаксиса, чтобы построить хороший. –

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