XSLT从嵌套元素中选择

2024-04-18 22:00:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我肯定我错过了一些简单的东西。。。在

我无法使用XLST转换选择嵌套的xml元素。在

这是xml

<collection>
<record>
  <leader>01814nam a2200205Ia 4500</leader>
  <controlfield tag="003">PSCA</controlfield>
  <controlfield tag="005">20141201150951.0</controlfield>
  <controlfield tag="008">131110s9999    xx            000 0 und d</controlfield>
  <datafield tag="040" ind1=" " ind2=" ">
    <subfield code="a">PSCA</subfield>
    <subfield code="c">Calyx</subfield>
  </datafield>
  <datafield tag="110" ind1=" " ind2=" ">
    <subfield code="9">76</subfield>
    <subfield code="a">Children's Services Central</subfield>
  </datafield>
  <datafield tag="245" ind1="0" ind2="0">
    <subfield code="a">What's Pedagogy Anyway?</subfield>
    <subfield code="b">Using pedagogical  documentation to engage  with the Early Years Learning  Framework </subfield>
  </datafield>
</record>
</collection

我需要选择以下数据:

/收集

/记录

/数据域

-->;/@tag='245'

--->;/subfield/@code='a'

我希望输出是: “教育学到底是什么?”在

My XLST选择此节点/数据如下:

^{pr2}$

如果这很重要的话,我将使用Python中的lxml库来运行它。 代码编译和运行没有错误。 我的输出为空。在

有什么想法吗? 提前谢谢。在


Tags: 数据gttagcodexmlrecordcollectionleader
2条回答

这就是我需要的

<xsl:value-of select="collection/record/datafield[@tag=245]/subfield[@code='a']" />
<xsl:for-each select="collection/record">
    <xsl:value-of select="datafield[@tag=245]/subfield[@code='a']"/>
</xsl:for-each>

我应该解释-我需要循环,因为提供的XML是500多条复杂记录的片段。不是这个例子。在

您可能想用@code='a'更改@code=a,例如:

 <xsl:template match="/">
    <xsl:value-of select="collection/record/datafield[@tag=245]/subfield[@code='a']"/>
</xsl:template>

编辑

如果您坚持使用for-each循环,请参见以下内容:

^{pr2}$

相关问题 更多 >