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,或者至少是完整的 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”,但您没有包含主题节点,因此我们不知道该名称是什么。