2009-07-15 31 views
0

一个属性翻倍标签我有这样的代码:在ROWLEX

[RdfSerializable(HasResourceUri=false)] 
    public class Item 
    { 
     [RdfProperty(true)] 
     public string MyProp; 
    } 

    [RdfSerializable] 
    public class AllItems 
    { 
     [RdfProperty(true)] public string mTitle; 

     private int id = new Random().Next(0, 20); 

     [ResourceUri] 
     public string ResourceUri 
     { 
     get { return "This " + id.ToString(); } 
     } 

     [RdfProperty(false, Name="item")] 
     public Item[] Items; 
    } 

创建这样:

var item = new AllItems(); 
item.mTitle = "Hello World!"; 
item.Items = new Item[] { new Item() { MyProp = "test1" }, new Item() { MyProp = "test2" } }; 

var doc = Rdfizer.Serialize(item); 

System.Console.Out.Write(doc.ToString()); 

下面是结果的一部分:

  <ns:AllItems rdf:about="This 1"> 
       <ns:mTitle rdf:datatype="http://www.w3.org/2001/XMLSchema#string 
">Hello World!</ns:mTitle> 
       <ns:item> 
         <ns:Item> 
           <ns:MyProp rdf:datatype="http://www.w3.org/2001/ 
XMLSchema#string">test1</ns:MyProp> 
         </ns:Item> 
       </ns:item> 
       <ns:item> 
         <ns:Item> 
           <ns:MyProp rdf:datatype="http://www.w3.org/2001/ 
XMLSchema#string">test2</ns:MyProp> 
         </ns:Item> 
       </ns:item> 
     </ns:AllItems> 

第一个问题是:我如何制作一个标签?

第二个问题:我怎样才能让标签不可见,但只有其内容?即其所有孩子都是标签的直接子女。

+0

您能否重新说明问题? – 2009-07-16 07:00:58

回答

1

简而言之:你想要违反RDF规范。它看起来像你想将输出视为XML,但你不应该!

在RDF中,您操纵三元组,并且永远不应该关心它是如何序列化为XML的,因为RDF与语法无关,并且RDF/XML序列化规范允许以多种不同方式表示同一组三元组。为了说明这一点,你可以选择RDF工具“A”创建一个RDF文档。您选择RDF工具“B”,加载该文档并将其另存为一个新名称,而不做任何修改。你比较这两个文件,你会在里面找到相同的三元组,但是这两个XML文件看起来可能完全不同!你不能让标签来去去去,实际上标签是“不是你的业务”:)。

的底线是,如果你要决定你的输出XML应该什么样子,你应该完全忘记RDF,只需使用普通的旧XML工具来完成工作做好。