2

我有来自 pubmed 的 XML 的这一部分:

<Abstract>

<AbstractText Label="BACKGROUND" NlmCategory="BACKGROUND"> one </AbstractText> 

<AbstractText Label="METHODS" NlmCategory="METHODS"> two </AbstractText>  

<AbstractText Label="RESULTS" NlmCategory="RESULTS"> three </AbstractText> 

<AbstractText Label="CONCLUSIONS" NlmCategory="CONCLUSIONS"> four</AbstractText>  

</Abstract>

根据文章的不同,有不同的数字标签(范围 0-4)。转换结果应为:

一二三四

我使用了这个 XSL:

<COL>
<DATA>
<xsl:value-of select="abstract" />
</DATA>
</COL>

不幸的是,这只适用于没有标签并且摘要直接在 "abstract" 下提供的情况。我必须如何修改 XSL 的这段摘录以使其传输“抽象”下提到的所有内容?

干杯 vier.gewinnt

4

2 回答 2

1

这是一个可能对您有用的解决方案:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/Abstract">
        <COL>
            <DATA>
                <xsl:apply-templates select="node() | @*" />
            </DATA>
        </COL>
    </xsl:template>

    <xsl:template match="AbstractText">
        <xsl:value-of select="@Label"/><xsl:text>,</xsl:text>
    </xsl:template>

</xsl:stylesheet>

将此应用于您的输入会产生:

<?xml version="1.0" encoding="UTF-8"?>
<COL>
    <DATA>BACKGROUND,METHODS,RESULTS,CONCLUSIONS,</DATA>
</COL>
于 2013-04-01T15:40:39.263 回答
0

这个简短而正确的转换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
  <COL>
    <DATA>
      <xsl:apply-templates/>
    </DATA>
  </COL>
 </xsl:template>

 <xsl:template match="*/*">
  <xsl:if test="not(position()=1)">, </xsl:if>
  <xsl:apply-templates select="@Label"/>
 </xsl:template>
</xsl:stylesheet>

应用于提供的 XML 文档时

<Abstract>
    <AbstractText Label="BACKGROUND" NlmCategory="BACKGROUND">one</AbstractText>
    <AbstractText Label="METHODS" NlmCategory="METHODS">two</AbstractText>
    <AbstractText Label="RESULTS" NlmCategory="RESULTS">three</AbstractText>
    <AbstractText Label="CONCLUSIONS" NlmCategory="CONCLUSIONS">four</AbstractText>
</Abstract>

产生想要的正确结果:

<COL>
   <DATA>BACKGROUND, METHODS, RESULTS, CONCLUSIONS</DATA>
</COL>
于 2013-04-02T03:04:23.530 回答