【问题标题】:Extract attribute value if child node contains this text如果子节点包含此文本,则提取属性值
【发布时间】:2018-10-01 02:58:59
【问题描述】:

鉴于此 xml 输入:

<?xml version="1.0" encoding="UTF-8"?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:doc="http://www.lyncode.com/xoai" xmlns:ore="http://www.openarchives.org/ore/terms/" xmlns:oreatom="http://www.openarchives.org/ore/atom/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">  
  <atom:id>http://hdl.handle.net/10862/152/ore.xml</atom:id>  
  <atom:link href="http://hdl.handle.net/10862/152" rel="alternate"/>  
  <atom:link href="http://hdl.handle.net/10862/152/ore.xml" rel="http://www.openarchives.org/ore/terms/describes"/>  
  <atom:link href="http://hdl.handle.net/10862/152/ore.xml#atom" rel="self" type="application/atom+xml"/>  
  <atom:published>2011-06-07T06:45:26Z</atom:published>  
  <atom:updated>2011-06-07T06:45:26Z</atom:updated>  
  <atom:source> 
    <atom:generator>SEAFDEC/AQD Institutional Repository</atom:generator> 
  </atom:source>  
  <atom:title>Field guide for the edible crustacea of the Philippines</atom:title>  
  <atom:author> 
    <atom:name>Motoh, Hiroshi</atom:name> 
  </atom:author>  
  <atom:category label="Aggregation" scheme="http://www.openarchives.org/ore/terms/" term="http://www.openarchives.org/ore/terms/Aggregation"/>  
  <atom:category scheme="http://www.openarchives.org/ore/atom/modified" term="2011-06-07T06:45:26Z"/>  
  <atom:category label="DSpace Item" scheme="http://www.dspace.org/objectModel/" term="DSpaceItem"/>  
  <atom:link href="https://repository.seafdec.org.ph/bitstream/10862/152/1/ediblecrustacea.pdf" length="2310365" rel="http://www.openarchives.org/ore/terms/aggregates" title="ediblecrustacea.pdf" type="application/pdf"/>  
  <atom:link href="https://repository.seafdec.org.ph/bitstream/10862/152/4/edible-crust-errata.pdf" length="177699" rel="http://www.openarchives.org/ore/terms/aggregates" title="edible-crust-errata.pdf" type="application/pdf"/>  
  <oreatom:triples> 
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="http://hdl.handle.net/10862/152/ore.xml#atom">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceItem"/>  
      <dcterms:modified>2011-06-07T06:45:26Z</dcterms:modified> 
    </rdf:Description>  
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/35/edible-crust-errata.pdf.txt">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceBitstream"/>  
      <dcterms:description>TEXT</dcterms:description> 
    </rdf:Description>  
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/36/ediblecrustacea.pdf.txt">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceBitstream"/>  
      <dcterms:description>TEXT</dcterms:description> 
    </rdf:Description>  
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/1/ediblecrustacea.pdf">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceBitstream"/>  
      <dcterms:description>ORIGINAL</dcterms:description> 
    </rdf:Description>  
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/4/edible-crust-errata.pdf">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceBitstream"/>  
      <dcterms:description>ORIGINAL</dcterms:description> 
    </rdf:Description>  
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/32/ediblecrustacea.pdf.jpg">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceBitstream"/>  
      <dcterms:description>THUMBNAIL</dcterms:description> 
    </rdf:Description>  
    <rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/33/edible-crust-errata.pdf.jpg">  
      <rdf:type rdf:resource="http://www.dspace.org/objectModel/DSpaceBitstream"/>  
      <dcterms:description>THUMBNAIL</dcterms:description> 
    </rdf:Description> 
      </oreatom:triples> 
    </atom:entry>

如果rdf:Description[@rdf:about] 的子节点在dcterms:description 元素中包含THUMBNAIL 的值,我想提取其第一次出现 的值。所以在我上面的示例xml输入中,我想提取https://repository.seafdec.org.ph/bitstream/10862/152/32/ediblecrustacea.pdf.jpg

编辑:

这篇文章与我之前的帖子相关:How to display thumbnails from harvested items in DSpace?

基本上,我想要实现的是将提取的值作为图像标签的src。因此,在点击该投反对票之前,请花点时间阅读该链接帖子。

提前致谢。

【问题讨论】:

    标签: xml xslt-1.0 dspace


    【解决方案1】:

    也许这会对你有所帮助:

    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dcterms="http://purl.org/dc/terms/">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
    <xsl:template match="/">
      <!-- You can use this XPath anywhere in the code.  -->
      <xsl:value-of select="//rdf:Description[boolean(@rdf:about) and 
                           .//dcterms:description[. = 'THUMBNAIL']][1]/@rdf:about"/>
    </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

    • 谢谢!顺便说一句,当我运行你的 xpath 表达式时,它返回了rdf:about="https://repository.seafdec.org.ph/bitstream/10862/152/32/ediblecrustacea.pdf.jpg"。是否可以只返回https://repository.seafdec.org.ph/bitstream/10862/152/32/ediblecrustacea.pdf.jpg
    • “rdf:about=" 没有出现在我的版本中。我正在运行 Visual Studio 1.0。您可以尝试将整个内容放在 string() 中,如下所示: select="string(//rdf:Description[boolean(@rdf:about) 和 .//dcterms:description[. = 'THUMBNAIL']][1 ]/@rdf:about)”。否则,这是您的处理器的特性。另外,请单击向上箭头以获取我的答案。谢谢。
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多