搜索不重复第一个参数的值



我使用xsl 1.0我想获得每个参数的相应值如下所示。注意下面我的第二个参数的当前结果是第一个重复的值。使用函数只选择不查找value = 'null'

my xml:

<INDIVIDUO param='1' >
  <DATA>
    <f16>
      <ROW f1='Breast' f2='63'/>
     </f16>
</INDIVIDUO>
<INDIVIDUO param='2' >
  <DATA>
    <f16>
      <ROW f1='Beddle' f2='40'/>
    </f16>
</INDIVIDUO>

my XSL code:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://xxx#" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>
<!--  Begin RDF document  -->
<xsl:template match="/">
<xsl:element name="rdf:RDF">
<rdf:Description rdf:about="http://xxx">
<xsl:apply-templates/>
</rdf:Description>
</xsl:element>
</xsl:template>
    <xsl:template match="f16">
        <xsl:choose>
          <xsl:when test="/INDIVIDUO/DATA/f16/ROW/@f1 !='NULL'">
            <xsl:element name="hasNameCancer" namespace="{namespace-uri()}#">
              <xsl:value-of select="/INDIVIDUO/DATA/f16/ROW/@f1" />
            </xsl:element>
          </xsl:when>
        </xsl:choose>
        <xsl:choose>
          <xsl:when test="/INDIVIDUO/DATA/f16/ROW/@f2 !='NULL'">
            <xsl:element name="idadediag" namespace="{namespace-uri()}#">
              <xsl:value-of select="/INDIVIDUO/DATA/f16/ROW/@f2" />
            </xsl:element>
          </xsl:when>
        </xsl:choose>

我的实际结果:

<individuo_1>
    <hasNameCancer>Breast</hasNameCancer>
    <idadediag>63</idadediag>
  </individuo_1>
  <individuo_2>
    <hasNameCancer>Breast</hasNameCancer>
    <idadediag>63</idadediag>
  </individuo_2>

我希望结果是:

<individuo_1>
    <hasNameCancer>Breast</hasNameCancer>
    <idadediag>63</idadediag>
  </individuo_1>
  <individuo_2>
    <hasNameCancer>Beddle</hasNameCancer>
    <idadediag>40</idadediag>
  </individuo_2>

您可能会得到相同的结果,因为您没有选择f16上下文中的行。您总是获得第一个元素,因为您实际上选择了所有行的集合。因为上下文是f16,所以可以使用相对表达式选择后代节点。

要在上下文中选择元素,请在testselect中使用相对 XPath表达式:

<xsl:template match="f16">
    <xsl:choose>
         <xsl:when test="ROW/@f1">
             <xsl:element name="hasNameCancer" namespace="{namespace-uri()}#">
                 <xsl:value-of select="ROW/@f1" />
             </xsl:element>
         </xsl:when>
    </xsl:choose>
    ...

相关内容

  • 没有找到相关文章

最新更新