【发布时间】:2014-11-15 12:50:54
【问题描述】:
我是 XSLT 的新手。我有一个 XML 文件,想使用 XSLT 将其转换为 RDF/XML。实际上,我找到了一个 XSLT 样式表,并在它和 XML 文件之间建立链接,结果在浏览器中显示为“文本”而不是 XML 文件。我的问题是:我想得到 RDF/XML 格式的转换结果,但不幸的是我得到的结果是纯文本。
XML 文件
<xml>
<?xml-stylesheet type="text/xsl" href="qu.xsl"?>
<person>
<name>Joe</name>
<website url="www.example1.com">contact1</website >
<vote>20</vote>
</person>
<person>
<name>Anna</name>
<website url="www.example2.com">contact2</website>
<vote>80</vote>
</person>
</xml>
XSLT 样式表是
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/spec/"
xmlns:foo="http://example.com/foo#">
<xsl:template match="/">
<rdf:RDF>
<rdf:Description rdf:about="http://www.example.com/xml">
<xsl:apply-templates/>
</rdf:Description>
</rdf:RDF>
</xsl:template>
<xsl:template match="person">
<xsl:variable name="critic"><xsl:value-of select="name"/></xsl:variable>
<xsl:variable name="criticWebsite"><xsl:value-of select="website/@url"/</xsl:variable>
<foo:hasCritic>
<rdf:Description rdf:about="http://www.example.com/critic/{$critic}">
<foaf:name><xsl:value-of select="name"/></foaf:name>
<foaf:homepage>
<rdf:Description rdf:about="http://{$criticWebsite}">
<rdfs:label><xsl:value-of select="website"/></rdfs:label>
</rdf:Description>
</foaf:homepage>
</rdf:Description>
</foo:hasCritic>
</xsl:template>
</xsl:stylesheet>
但结果是: 乔联系人 1 20 安娜联系人 2 80
【问题讨论】:
-
我修复了多个拼写错误和语法错误,但仍不清楚您在问什么。请注意,请求图书馆可能会导致问题被关闭,因为此类推荐请求在这里是题外话。我建议展示一些示例输入和输出以及您在 XSLT 中为达到预期结果所做的尝试。还建议您通过文本编辑器而不是浏览器查看输出;如果您的问题的重点是浏览器中 XML 的出现,请编辑您的问题以阐明该意图。谢谢。
-
@kjhughes 我添加了我的尝试,正如我所说我是新人并从stackoverflow.com/questions/10499281/… 中获取这个示例,但我想学习如何转换和表示 RDF/XML 格式的转换
-
感谢您添加实际的 XML 和 XSLT -- 让我们更容易提供帮助。详见我的answer below。