【发布时间】:2013-03-22 10:20:58
【问题描述】:
我需要从下面的 XML/RDF 中显示rdf:resource 的值。
<?xml version="1.0" encoding="UTF-8"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#">
<skos:Concept rdf:about="http://example.com/randomurl">
<skos:prefLabel xml:lang="en">example</skos:prefLabel>
<skos:broader rdf:resource="http://example.com/randomurl"/>
<skos:broader rdf:resource="http://example.com/randomurl"/>
<owl:sameAs rdf:resource="http://example.com/randomurl"/>
</skos:Concept>
</rdf:RDF>
我试过了,但找不到正确的路径。这可能是我忽略的非常小的和值得关注的东西。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#">
<xsl:template match="/">
<html>
<body>
<h2><xsl:value-of select="//skos:prefLabel" /></h2>
<br />
<xsl:for-each select="//skos:broader">
Broader: <br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
它确实进入了 for-each 循环并显示正确数量的具有 skos:narrower 的节点,但是当我尝试使用 rdf:resource 获取时
<xsl:for-each select="//skos:broader">
Broader: <xsl:value-of select="@rdf:resource" /><br />
</xsl:for-each>
或选择的变体,它只是不起作用。我试图通过谷歌搜索并在 Stack Overflow 上搜索来找到解决方案,但没有找到解决方案。
那我做错了什么?
编辑:产生以下错误:
警告:XSLTProcessor::transformToXml():第 57 行 [path] 中未定义的命名空间前缀
警告:XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 第 57 行 [path] 中的评估失败
警告:XSLTProcessor::transformToXml():运行时错误:文件 [path] 第 25 行元素值在第 57 行 [path] 中
警告:XSLTProcessor::transformToXml():XPath 评估未返回任何结果。在
【问题讨论】:
-
你真的是指
skos:broader吗?您的示例 XML 中没有任何这些元素。 -
啊该死的。我以为我已经改变了这一点。杰普,我的意思是那个。
-
“它只是不起作用”......以什么方式?
-
它在 w3schools.com 上不显示任何内容 试试看。它确实在我的服务器上显示错误,现在将它们放在帖子中。
-
很高兴您已将其修复,但请记住,XML 中同一 RDF 图有许多不同的等效序列化(例如
<skos:Concept rdf:about="http://example.com/randomurl">与<rdf:Description rdf:about="http://example.com/randomurl"><rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"></rdf:Description>),因此您可能明智使用适当的 RDF API 而不是简单地将其视为 XML。