我正在尝试使用xslt将last.fm xml数据转换为rdf并收到此错误:ERROR [http-8080-1](RDFDefaultErrorHandler.java:40) - (第3行第24列):{E202}期待XML开始或结束元素。字符串数据“Joseph Arthur”不被允许。可能是条纹错误。
任何人都可以向我解释条形错误是什么,或者一般来说我做错了什么。
xslt代码在这里:
<xsl:for-each select="/lfm/artists/artist">
<lfm:name><xsl:value-of select="name"/></lfm:name>
</xsl:for-each>
感谢。
答案 0 :(得分:3)
查看由此产生的完整xml,或者至少是完整的xslt和输入xml(没有提到'Joseph Arthur')真的很有帮助。
因此,将所有这些放在一边,你正在生成的rdf / xml打破了一个称为“条带化”的重要特性。 Dan Brickley写了useful explanation,但这里有一个非常简短的总结:当用rdf / xml
时<a>
<b>
<c>
<d>
你知道奇数标签(a,c)对应于rdf图中的节点,而偶数标签(c,d)代表边或属性。语法'stripe'节点和属性。
此外,如果一个元素包含文本,它必须是一个属性(节点元素只包含其他元素,或者什么都没有)。
因此解析器认为它位于节点上,因此期望更多元素,找到文本,并建议您在错误的位置使用属性。我的猜测是你的rdf看起来像:
<rdf:RDF ...>
<lfm:name>Joseph Arthur</lfm:name>
....
你说有些东西的属性名称是'Joseph Arthur',但是你还没有包含一个主题节点,所以我们不知道这个名字是什么。