例如,请考虑以下示例
<?xml version="1.0" ?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
<dc:title>Tony Benn</dc:title>
<dc:publisher>Wikipedia</dc:publisher>
</rdf:Description>
</rdf:RDF>
这里我们描述资源http://en.wikipedia.org/wiki/Tony_Benn。我们知道他是一个人。 使用自己的标签而不是&lt;正确/可能。的rdf:描述/&GT; ? 例如,像这样:
<?xml version="1.0" ?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:z="http://www.zebooka.com/">
<z:Person rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
<dc:title>Tony Benn</dc:title>
<dc:publisher>Wikipedia</dc:publisher>
</z:Person>
</rdf:RDF>
答案 0 :(得分:3)
<z:Person
xmlns:z="http://www.zebooka.com/"
rdf:about="http://en.wikipedia.org/wiki/Tony_Benn" />
与
相同<rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
<rdf:type rdf:resource="http://www.zebooka.com/Person" />
</rdf:Description>
只需确保http://www.zebooka.com/Person
及其来自rdfs:Class
类型。
答案 1 :(得分:2)
我稍后会回答你关于更改元素名称的问题,或者至少是后面的问题。但是我想指出描述元素是描述文档,而不是那个人。我会添加&lt; dc:subject&gt;人&lt; / dc:person&gt;元素,以获取适合已使用的模式的元信息。文档的主题是该人或该人的名称,dc命名空间定义主题元素。这是我建议的解决方案,我可以从你的问题中找到你的用例。
否则,如果该解决方案不适合您,可以从这里了解更多信息。首先,您需要检查示例中rdf命名空间定义的方案。如果RDF元素包含允许任何命名空间的任何元素定义,则它是可能的。可能还有其他更高级的方案概念允许您想要的扩展,例如允许替换组的描述。有一些例子可以在这个网站上进行,使用搜索。
如果涉及互操作性,您可以通过替换组进行扩展,这实际上是可行的。使用没有替换组的新元素似乎是直截了当的。但是,如果您希望通过兼容的实现创建和传输文档,则解析器不会将该数据视为相同,因为它不会知道元素的语义含义。如果您正在为处理XML的端点编写代码,则可以执行任何操作,并且无需验证文档或根据自己的比例对其进行验证。这将需要更多的工作,而不是尊重这些类型的架构。
如果将元素名称更改为架构中的已定义元素(没有替换组),则您的数据将无法与外部源互操作。外部供应商最多会删除自定义元素中的所有数据,最糟糕的是它根本不会读取或处理任何数据。看来元素描述可能会接受任何其他元素(我无法验证,因为架构的URL现在已经关闭)所以我建议您定义自己的子元素以进行描述,例如,如果需要,可以包含值person的类型如果您的目标是使用自己定义的元素,则会显示此信息。退出实现的方式可能只是忽略该元素,如果它不理解它,但同时它不会丢失所有其他信息。
如果您担心数据在表示层上的外观,我建议您使用xslt转换或视图中最直接的约定来转换数据。没有真正需要更改数据模型。