我正在尝试使用 xslt 将 last.fm xml 数据转换为 rdf 并收到此错误:错误 [http-8080-1] (RDFDefaultErrorHandler.java:40) - (第 3 行第 24 列): {E202}需要 XML 开始或结束元素。不允许字符串数据“Joseph Arthur”。也许是 strip 错误。
任何人都可以向我解释什么是 strip 错误,或者一般来说我做错了什么。
xslt 代码在这里:
<xsl:for-each select="/lfm/artists/artist">
<lfm:name><xsl:value-of select="name"/></lfm:name>
</xsl:for-each>
谢谢。
最佳答案
查看由此生成的完整 xml,或者至少查看完整的 xslt 和输入 xml(其中没有提及“Joseph Arthur”)确实很有帮助。
所以抛开所有这些,您正在生成的 rdf/xml 破坏了一个称为“ strip 化”的重要功能。丹·布里克利 (Dan Brickley) 写了一个 useful explanation ,但这里有一个非常简短的总结:当与 rdf/xml 一起呈现时
<a>
<b>
<c>
<d>
你知道奇数标签(a,c)对应于rdf图中的节点,而偶数标签(c,d)代表边或属性。语法“stripes”节点和属性。
此外,如果一个元素包含文本,它必须是一个属性(节点元素只包含其他元素,或者不包含任何元素)。
因此解析器认为它位于一个节点,因此期望更多元素,找到文本,并建议您在错误的位置使用属性。我的猜测是你的 rdf 看起来像:
<rdf:RDF ...>
<lfm:name>Joseph Arthur</lfm:name>
....
您说过某个属性名称的值为“Joseph Arthur”,但您没有包含主题节点,因此我们不知道该名称是什么。
关于xml - 什么是 strip 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188220/