什么是条带错误?

Mat*_*ttk 2 xml xslt rdf last.fm

我正在尝试使用 xslt 将 last.fm xml 数据转换为 rdf 并收到此错误: ERROR [http-8080-1] (RDFDefaultErrorHandler.java:40) - (line 3 column 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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢。

use*_*512 5

查看由此生成的完整 xml,或者至少是完整的 xslt 和输入 xml(其中没有提到“Joseph Arthur”)确实很有帮助。

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

<a>
  <b>
    <c>
      <d>
Run Code Online (Sandbox Code Playgroud)

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

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

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

<rdf:RDF ...>
  <lfm:name>Joseph Arthur</lfm:name>
  ....
Run Code Online (Sandbox Code Playgroud)

您已经说过某些内容的属性名称值为“Joseph Arthur”,但您没有包含主题节点,因此我们不知道该名称是什么。