2

我正在尝试使用 xslt 将 last.fm xml 数据转换为 rdf 并收到此错误:错误 [http-8080-1] (RDFDefaultErrorHandler.java:40) - (第 3 行第 24 列): {E202} Expecting XML start或结束元素。不允许使用字符串数据“Joseph Arthur”。也许是条带错误。

谁能向我解释什么是条带错误,或者一般来说我做错了什么。

xslt 代码在这里:

    <xsl:for-each select="/lfm/artists/artist">
        <lfm:name><xsl:value-of select="name"/></lfm:name>
    </xsl:for-each>

这是 xml 位置: http ://ws.audioscrobbler.com/2.0/?method=library.getartists&api_key=b25b959554ed76058ac220b7b2e0a026&user=joanofarctan

谢谢。

4

1 回答 1

4

查看由此生成的完整 xml 或至少完整的 xslt 和输入 xml(其中没有提到“约瑟夫·亚瑟”)真的很有帮助。

因此,抛开所有这些,您正在生成的 rdf/xml 破坏了一个称为“条带化”的重要功能。Dan Brickley 写了一个有用的解释,但这里有一个非常简短的总结:当使用 rdf/xml 呈现时

<a>
  <b>
    <c>
      <d>

您知道奇数标签 (a, c) 对应于 rdf 图中的节点,而偶数标签 (c, d) 表示边或属性。语法“条纹”节点和属性。

此外,如果一个元素包含文本,它必须是一个属性(节点元素只包含其他元素,或者什么都不包含)。

所以解析器认为它在一个节点上,因此期望更多元素,找到文本,并建议您在错误的地方使用了一个属性。我的猜测是你的 rdf 看起来像:

<rdf:RDF ...>
  <lfm:name>Joseph Arthur</lfm:name>
  ....

您说某物的属性名称为“Joseph Arthur”,但您没有包含主题节点,所以我们不知道这个名称是什么。

于 2010-02-03T00:10:38.770 回答