1

I'm trying to place in a text file the following:

<skos:Concept rdf:about="http://aims.fao.org/aos/agrovoc/c_26321">
<skos:prefLabel xml:lang="fa">آبیس ماریزی‌ای</skos:prefLabel>
<skos:prefLabel xml:lang="zh">大白叶冷杉</skos:prefLabel>
<skos:prefLabel xml:lang="tr">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="th">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="sk">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="ru">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="pt">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="hi">एबीस मैरीइसी</skos:prefLabel>
<skos:prefLabel xml:lang="pl">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="lo">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="it">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="hu">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="de">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="cs">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="fr">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="es">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="en">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="ja">オオシラビソ、アオモリトドマツ</skos:prefLabel>
<skos:prefLabel xml:lang="ar">شوح ماريزي</skos:prefLabel>
<skos:broader rdf:resource="http://aims.fao.org/aos/agrovoc/c_10"/>

I just want to get the value of skos:prefLabel xml:lang="en" and the attribute value of skos:Concept rdf:about, so it will be transformed as below:

=301  \\$abroader$bAbies mariesii$c=301  \\$abroader$bAbies mariesii

I have below the xslt script but I can't seem to transform it correctly:

<?xml version="1.0" encoding="UTF-8"?>
  ....
<xsl:apply-templates select="skos:Concept" />
<xsl:text>&#13;&#10;</xsl:text>

   ....
<xsl:template match="skos:Concept">
  <xsl:if test="skos:broader">
    <xsl:for-each select="skos:prefLabel|skos:Concept" />
      <xsl:text>=301  \\$abroader$b</xsl:text><xsl:value-of select="skos:prefLabel[@xml:lang='en']" /><xsl:text>$c</xsl:text><xsl:value-of select="skos:Concept[rdf:about]" />
      <xsl:text>&#13;&#10;</xsl:text>
  </xsl:if>
 </xsl:template>

TIA!

schnydszch
  • 435
  • 5
  • 19
  • Okay got it, and for archiving purposes, I used the following: =301 \\$abroader$b$c Just a simple "." Cheers! – schnydszch Jul 23 '15 at 14:53

1 Answers1

1

(*For archiving purposes) The following solved my problem:

<xsl:template match="skos:Concept">
  <xsl:if test="skos:broader">
    <xsl:for-each select="skos:prefLabel|skos:Concept" />
      <xsl:text>=301  \\$abroader$b</xsl:text><xsl:value-of select="skos:prefLabel[@xml:lang='en']" /><xsl:text>$c</xsl:text><xsl:value-of select="./@rdf:about" />
      <xsl:text>&#13;&#10;</xsl:text>
  </xsl:if>

It was just a matter of adding one line code. And was an offshoot of reading this particular stackoverflow question: Getting the parent node attributes in XSL

Community
  • 1
  • 1
schnydszch
  • 435
  • 5
  • 19