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>
첫 번째 질문은 : 어떻게 단일 태그를 만들고 할 수 있습니까?
두 번째 질문 : 태그가 보이지 않고 콘텐츠 만 만드는 방법은 무엇입니까? 즉, 모든 아이들은 태그의 직접적인 아이들이되도록합니다.
해결책
요컨대 : 원하는 것은 RDF 사양을 위반합니다. 출력을 XML로 취급하고 싶지만해서는 안됩니다!
RDF에서는 트리플을 조작하고 RDF가 구문 독립적이고 RDF/XML 직렬화 사양이 동일한 트리플 세트를 여러 가지 방식으로 나타낼 수 있기 때문에 트리플을 조작하고 XML로 직렬화되는 방법을 절대 신경을 쓰면 안됩니다. 설명하기 위해 RDF 도구 "A"RDF 문서 작성을 선택할 수 있습니다. RDF 도구 "B"를 선택하고 해당 문서를로드하고 수정없이 새 이름으로 다시 저장하십시오. 두 파일을 비교하면 내부에 동일한 트리플을 찾을 수 있지만 두 XML 파일은 상당히 다를 수 있습니다! 태그를 올 수없고 갈 수 없습니다. 실제로 태그는 "비즈니스가 아닙니다"입니다. :).
결론은 출력 XML이 어떻게 보이는지 지시하려면 RDF를 완전히 잊어 버리고 평범한 오래된 XML 도구를 사용하여 작업을 완료해야합니다.
제휴하지 않습니다 StackOverflow