Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xslt-通过xpath获取元素的前一个同级_Xml_Xpath_Xslt 1.0_Rdf_Skos - Fatal编程技术网

Xml xslt-通过xpath获取元素的前一个同级

Xml xslt-通过xpath获取元素的前一个同级,xml,xpath,xslt-1.0,rdf,skos,Xml,Xpath,Xslt 1.0,Rdf,Skos,我试图获取元素skos:prefLabel的值,该元素有一个兄弟skos:closeMatch。然而,我发现还有其他skos:prefLabel是skos:closeMatch的前辈。我目前正在进行以下工作: <?xml version="1.0" encoding="utf-8" ?> <root> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:skosx

我试图获取元素skos:prefLabel的值,该元素有一个兄弟skos:closeMatch。然而,我发现还有其他skos:prefLabel是skos:closeMatch的前辈。我目前正在进行以下工作:

<?xml version="1.0" encoding="utf-8" ?>
 <root>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:skosxl="http://www.w3.org/2008/05/skos-xl#"
     ....(namespaces deleted for brevity)
     xmlns:xml="http://www.w3.org/XML/1998/namespace">

  <skos:Concept rdf:about="http://aims.fao.org/aos/agrovoc/c_26321">
   <skos:prefLabel xml:lang="fa">آبیس ماریزی‌ای</skos:prefLabel>
   <skos:prefLabel xml:lang="en">Abies mariesii</skos:prefLabel>
    ....
  </skos:Concept>

  <skos:Concept>
    ....
  </skos:Concept>

  <skos:narrower rdf:resource="http://aims.fao.org/aos/agrovoc/c_1322232213779"/>
  <skos:narrower rdf:resource="http://aims.fao.org/aos/agrovoc/c_19"/>
  <skos:prefLabel xml:lang="ar">شوح</skos:prefLabel>
  <skos:prefLabel xml:lang="fa">آبیس</skos:prefLabel>
  <skos:prefLabel xml:lang="ko">전나무속</skos:prefLabel>
  <skos:prefLabel xml:lang="ja">モミ属</skos:prefLabel>
  <skos:prefLabel xml:lang="tr">Abies</skos:prefLabel>
     ....
  <skos:prefLabel xml:lang="es">Abies</skos:prefLabel>
  <skos:prefLabel xml:lang="en">Abies</skos:prefLabel>
     ....
  <skos:prefLabel xml:lang="hi">पलूदर</skos:prefLabel>
  <skos:prefLabel xml:lang="zh">冷杉属</skos:prefLabel>
  <skos:closeMatch>
   <rdf:Description rdf:about="http://d-nb.info/gnd/4184405-1">
    <skos:closeMatch rdf:resource="http://aims.fao.org/aos/agrovoc/c_10"/>
   </rdf:Description>
  </skos:closeMatch>
    ....
  </rdf:RDF>
<?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    ....(namespaces deleted for brevity)
 xmlns:ns1="http://art.uniroma2.it/ontologies/vocbench#"
 xmlns:void="http://rdfs.org/ns/void#">
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>

<xsl:template match="root">
 <xsl:for-each select="rdf:RDF">
 <xsl:text>START HERE</xsl:text>
 <xsl:text>&#13;&#10;</xsl:text>
 <xsl:text>=LDR  00000nam  2200000Ia 4500</xsl:text>
 <xsl:text>&#13;&#10;</xsl:text>
   ....
 <xsl:apply-templates select="skos:Concept" />
 <xsl:text>&#13;&#10;</xsl:text>
    ....
</xsl:for-each>
</xsl:template>

 <xsl:template match="skos:Concept/skos:prefLabel">
  <xsl:for-each select="//skos:closeMatch/preceding-sibling::skos:prefLabel" />
  <xsl:text>=306  \\$aclosematch$b</xsl:text>
  <xsl:value-of select="." />   
  <xsl:text>&#13;&#10;</xsl:text>
 </xsl:template> 
.....
</xsl:stylesheet>
使用上面的xslt,我得到的是所有的skos:prefLabel,这就是为什么我在问题的开头一行提到,除了最接近的skos:closeMatch之外,还有许多skos:prefLabel。我还试着输入select=preference sibling::skos:prefLabel和preference sibling::skos:prefLabel的值以及各种组合,或者我得到的是相同的一组skos:prefLabel或空白。我希望你能帮我回答我的问题。蒂亚,干杯

注意:整个文件可用

更改
select=“//skos:closeMatch/previous sibling::skos:prefLabel”
select=“//skos:closeMatch/previous sibling::skos:prefLabel[1]”
应该做你想做的事我希望..

更改
select=“//skos:closeMatch/previous sibling::skos:prefLabel”
select=“//skos:closeMatch/previous sibling::skos:prefLabel[1]”

我希望你能做你想做的事你的问题不清楚。首先,所有的
skos:prefLabel
节点都是
skos:CloseMatch
的兄弟节点。您向我们展示的输出中包含的数据不在输入中。那么模板应该有[1]个位置?شوح、آبیس和전나무속 实际上是在我的示例的输入中。文件实际位于此处:。谢谢我不知道,因为我不明白你的目标是什么。我建议你尽量减少你的例子,只说明问题的必要性。提示:我们大多数人不懂阿拉伯语、波斯语或韩语,因此很难将输入与输出关联起来(无论如何,输入与输出不匹配-输入中没有“car”、“cfa”或“cko”)。请复习:嗨!我编辑了这个问题。实际上,我已经指出,我还没有将模板放入xml:lang属性中,但是由于它增加了混乱,我对其进行了编辑。事实上,在ar之前是$c,意思是阿拉伯语,并且已经在编辑中添加了模板。我投票结束了你的问题,因为“寻求调试帮助的问题(“为什么这个代码不起作用?”)必须包括所需的行为、特定的问题或错误,以及在问题本身中复制它所需的最短代码。”你的问题不清楚。首先,所有的
skos:prefLabel
节点都是
skos:CloseMatch
的兄弟节点。您向我们展示的输出中包含的数据不在输入中。那么模板应该有[1]个位置?شوح、آبیس和전나무속 实际上是在我的示例的输入中。文件实际位于此处:。谢谢我不知道,因为我不明白你的目标是什么。我建议你尽量减少你的例子,只说明问题的必要性。提示:我们大多数人不懂阿拉伯语、波斯语或韩语,因此很难将输入与输出关联起来(无论如何,输入与输出不匹配-输入中没有“car”、“cfa”或“cko”)。请复习:嗨!我编辑了这个问题。实际上,我已经指出,我还没有将模板放入xml:lang属性中,但是由于它增加了混乱,我对其进行了编辑。事实上,在ar之前是$c,意思是阿拉伯语,并且已经在编辑中添加了模板。我投票结束了你的问题,因为“寻求调试帮助的问题(“为什么这个代码不起作用?”)必须包括所需的行为、特定的问题或错误,以及在问题本身中复制它所需的最短代码。”
=306  //$aشوح
=306  //$aآبیس
=306  //$a전나무속
 ....
=306  //$aAbies