【问题标题】:XSLT XPATH predicate with dynamic content inside?XSLT XPATH 谓词里面有动态内容?
【发布时间】:2011-12-11 09:02:25
【问题描述】:

我试图只选择那些变量值等于其他变量值的节点。确切的文字是这样的:

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

但它不起作用。我想不可能在谓词中放置节点值表达式。但是,我也很难相信。所以这就是我在这里问的原因:)

这个表达有什么问题??

谢谢!

编辑: xml 代码是这样的:

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

还有什么不能用

&lt;xsl:value-of select="/data/peptides/peptide/protein_accessions[accession = ./accession/accs]" /&gt;

适用于

&lt;xsl:value-of select="/data/peptides/peptide/protein_accessions[accession = current()/accession/accs]" /&gt;

但是,我在应用模板调用中使用它,我仍然不确定这个表达式是否符合我的要求(选择具有该特定编号的所有肽节点),但至少我可以继续并尝试一下:)

谢谢!

【问题讨论】:

  • XPath 表达式中没有变量。请把你的术语弄清楚。 (变量看起来像$variable,你一定是别的意思。)
  • 其实我是用“变量”这个词来表示可变内容,所以每次评估句子时它都会改变。也许“动态”会是一个更好的词。

标签: xslt dynamic xpath predicate


【解决方案1】:

如果没有看到您的 XML,这很难回答,但您的意思可能是

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

【讨论】:

  • 是的,其实和“.”是一样的表达方式不起作用,但使用“current()”它可以工作。 xml 代码将是这样的: ......89456......肽>
  • (抱歉,不清楚 cmets 是如何工作的,我已经编辑了最初的问题,非常感谢!)
【解决方案2】:

适用于

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

但是,我在应用模板调用中使用它,我仍然没有 确定这个表达式是否符合我的要求(选择所有 具有该特定编号的肽节点)

上面的 XPath 表达式很明显 没有 选择任何peptide 元素

它选择的所有节点(如果存在)都是名为 protein_accessions 的元素。

如果您希望选择适当的 peptide 元素,请使用以下内容:

/data/peptides/peptide
                [protein_accessions/accession 
                =
                 current()/accession/accs
                ]

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多