Предикат XSLT XPATH с динамическим содержимым внутри? - PullRequest
1 голос
/ 11 декабря 2011

Я пытаюсь выбрать только те узлы, у которых значение переменной равно значению другой переменной. Точный текст будет таким:

<xsl:value-of select="/data/peptides/peptide/protein_accessions[accession = ./accession/accs]" />

Но это не работает. Я предполагаю, что невозможно поместить выражение значения узла в предикат. Но также мне трудно поверить. Вот почему я здесь спрашиваю:)

Что не так с этим выражением ??

Спасибо!

EDIT: XML-код будет выглядеть примерно так:

<data> <proteins>...</proteins> <peptides><peptide>...<protein_accessions><accession>89456</accession></protein_accessions>...</peptide>...</peptides> </data>

А с чем не работал

<xsl:value-of select="/data/peptides/peptide/protein_accessions[accession = ./accession/accs]" />

работает с

<xsl:value-of select="/data/peptides/peptide/protein_accessions[accession = current()/accession/accs]" />

Тем не менее, я использую это в вызове apply-template, я все еще не уверен, что это выражение делает то, что я хочу сделать (чтобы выбрать все пептидные узлы с этим конкретным номером), но, по крайней мере, я могу двигаться дальше и попробуй что-то:)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 декабря 2011

работает с

    <xsl:value-of select=
      "/data/peptides/peptide/protein_accessions
                              [accession = current()/accession/accs]" />

Тем не менее, я использую это в вызове apply-template, я все еще не уверен, что это выражение делает то, что я хочу сделать (чтобы выбрать все пептидные узлы с этим конкретным номером)

Выражение XPath, приведенное выше, явно не вообще выделяет peptide элемент .

Все узлы, которые он выбирает, если таковые существуют, являются элементами с именем protein_accessions.

Если вы хотите, чтобы были выбраны соответствующие элементы peptide, используйте что-то вроде этого:

/data/peptides/peptide
                [protein_accessions/accession 
                =
                 current()/accession/accs
                ]
0 голосов
/ 11 декабря 2011

Сложно ответить на ваш XML, но вы, вероятно, имеете в виду

<xsl:value-of select="
  /data/peptides/peptide/protein_accessions[
    accession = current()/accession/accs
  ]
" />
...