2009-07-15 59 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工具來完成工作做好。