2012-02-20 61 views
1

通常,XML中的#,当前缀到文本的短字符串,用于指示一个XML“片段”。它只是告诉浏览器在之后使用@ID属性加载完整页面后,跳转到带有指定为ID的文本的XHTML元素。完整意义

在RDFa的,似乎人们倾向于创造的词汇时,避免给每个不同期限不同的URL的必须要使用这个。假设主URI类似于“www.example.com/vocabulary/”,那么词汇创建者可以选择使词汇表的URI具有这样的URI:“www.example.com/vocabulary/term1”或者像这样:“www.example.com/vocabulary#term1”。如果这些URI只会被用作空灵的URI,而这些URI不会解析为真实的网页,那么它就是一个没有区别的区别。然而,如果所述创建者打算创建网页来描述所述词汇,则他们可能更容易使用后者,因为然后整个词汇的描述出现在具有URL“www.example.com/”的一个网页上词汇/ index.html“和#term1将导致浏览器跳转到XHTML元素,并使用@ID属性将term1设置为ID。

然而,这里是个问题,我也看到哈希标记用于有关RDFa的各种解释和辅导的方式不同。我已经看到它的@about属性中使用这样的:

<span about="#jane"> 
    <!-- Other RDFa or XHTML in here. --> 
</span> 

在这种情况下,这些教程声称#jane现在是一个主题的URI,对此,一个能写谓语和宾语。但是,如果#jane是一个URI,那么“她”的完整URI是什么?它会作为页面的当前基本URI并在其尾部添加#jane吗?如果是这样,那么about =“#jane”属性是否在同一个XHTML元素中提供了等价函数作为ID =“jane”属性?但是,about =“#jane”可以在许多不同的XHTML元素中使用,这会给它们所有相同的ID,这是非法的。

难道我们创建了一个使用#jane作为其节点ID的空白节点(B节点),然后开始说有关空白节点东西呢?但是,我认为创建空白节点的正确方法是=“[_:jane]”,所以我很困惑。

或者,我们谈论了一些XHTML元素,包含ID =“简”属性,在其他地方可能会或可能不会被创建,但根本就没有实施例中提及在同一页上?

或者只是使用一般的教程中接受了速记所有这些教程和实例的所有作家,但没有解释他们在做什么的挫折感?如果是这样,我有很多帅哥,当我遇见他们时,我会头朝上。

回答

2

在RDFa的,约=“#XYZ”分配一个相对URI作为标识符以下RDF陈述的主题。 全局URI是如何从本地标识符派生的形式规范有点复杂,但实际上,它将成为资源的基本URI和片段部分。如果文档的基本URI没有明确设置,则这将是从中检索到表示的URI。

所以,如果你有一个文件产品。html和使URI

http://www.example.org/product.html下此可用的(请注意,本地文件名和公共URI是不是硬有线),

然后节点

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer"> 
... 
</div> 

将赋予该数据元素全球URI

http://www.example.org/product.html#offer

现在,你需要什么用的?

最常见的情况是,您可能希望在另一个资源中创建关于此实体的声明,然后可以使用它来整理关于巨图中同一对象的所有信息。

但是,您也可以使用这种技术来整理分散在同一个HTML文档中的元数据,因为多次使用“about”和相同的标识符是完全合法的。

例如,你可以使用这个

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer"> 
<span property="gr:name">ACME Anvil</span> 
</div> 

及以下500线:然后

<div typeof="http://purl.org/goodrelations/v1#Offering" about="#offer"> 
<span property="gr:description">The ACME Anvil is the most advanced anvil that money can buy</span> 
</div> 

的RDFa的解析器会知道,在GR:名称和GR:说明属性属于同一个对象。

在微数据语法中,您可以使用稍微更优雅的“itemref”关键字来直接链接包含引用同一对象的元数据的HTML元素。在RDFa中,您只能通过重复使用“about”的相同标识符来间接集成散布在HTML中的内容。

所以一言以蔽之:

  1. 使用有关RDFa的是一个非常好的做法,因为这有助于与其他数据链接数据。做吧!
  2. 不要重复使用您为导航目的使用带有ID =“#XYZ”的有关财产片段..

因此,如果片段标识符跳转到该产品是

<div id="product"> blablabla> </div> 

不使用约=#产品”,但例如约=‘#product_data’用于识别的数据对象。

  1. 这是完全没关系具有相同标识符使用约属性多次,如罗正如你在谈论同一个对象(例如,同一个产品,同一个公司)。

现在,为什么片段标识符在例子中如此受欢迎?因为您可以使用该模板轻松获取每个单独页面的全局标识符 - 想象一下有1000个商品的商店正在销售。如果添加

about="#product_data" 

的产品数据标记元素,那么每件单品都会有一个全局标识符,其他人可以参考一下。

注意事项:某些模板将所有单独页面的基本URI设置为主页面。在这种情况下,所有产品都会得到相同的URI。因此,如果将基本URI设置为除单个页面的规范化URI之外的任何内容,则相对URI不起作用。

+0

Martin,谢谢 – GrantRobertson 2012-02-21 02:11:03