0

我有这个代码:

   [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>

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

第二个问题:如何使标签不可见,而只显示其内容?即它的所有孩子都是标签的直接孩子。

4

1 回答 1

1

简而言之:你想要的违反 RDF 规范。看起来您希望将输出视为 XML,但您不应该这样做!

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

底线是,如果您想规定输出 XML 的外观,您应该完全忘记 RDF,而只需使用普通的旧 XML 工具来完成工作。

于 2009-07-16T15:30:37.943 回答