Удвоенные теги для одного свойства в 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>
Первый вопрос: как я могу сделать и быть одним тегом?
Второй вопрос: как сделать тег не видимым, а только его содержимое? т.е. все его дети должны быть прямыми потомками тега.
1 ответ
Вкратце: то, что вы хотите, нарушает спецификации RDF. Похоже, вы хотели бы рассматривать вывод как XML, но не должны!
В RDF вы манипулируете тройками, и вам никогда не нужно заботиться о том, как его сериализовать в XML, потому что RDF не зависит от синтаксиса, а спецификации сериализации RDF/XML позволяют представлять один и тот же набор тройок по-разному. Чтобы проиллюстрировать это, вы можете выбрать RDF Tool "A" для создания RDF-документа. Вы выбираете RDF Tool "B", загружаете этот документ и снова сохраняете его под новым именем без каких-либо изменений. Вы сравниваете два файла, и вы найдете те же самые тройки внутри, но эти два XML-файла могут выглядеть совершенно по-разному! Вы не можете заставить теги приходить и уходить, на самом деле теги - это не ваше дело:).
Суть в том, что если вы хотите диктовать, как должен выглядеть ваш выходной XML, вы должны просто полностью забыть о RDF и просто использовать старые инструменты XML, чтобы выполнить свою работу.