2009-08-24 5 views
1

Ich entwerfe XML für einige benutzerdefinierte Protokollierung. Es gibt einen Teil im Logger, in dem der Entwickler Name/Wert-Paare zum Log hinzufügen kann. Ich versuche zu entscheiden, wie das XML aussehen soll. Ich versuche zu entscheiden, ob der Name Teil des Name-Wert-Paares ein Attribut sein soll. (Ich denke schon). Hier ist, was ich bisher:Allgemeine Stil Frage zu XML

 

<ExtendedProperties> 
    <ExtendedProperty name="Name1">Value1</ExtendedProperty> 
    <ExtendedProperty name="Name2">Value2</ExtendedProperty> 
</ExtendedProperties 
 

Die andere Option (die ich kenne) auf den Wert Name Name des Knotens zu machen:

<Name1>Value1</Name1> 
<Name2>Value2</Name2> 

Ich mag die erste Methode (Attribut basiert) besser weil ich das Dokument mit XSD einfacher beschreiben kann, und ich kann sehen, wie Sie xpath oder xquery verwenden können, um auf alle Elemente des Typs "ExtendedProperty" zuzugreifen. (Die verfügbaren Namen sind nicht vordefiniert - sie könnten alles sein.)

Allerdings verbringe ich nicht viel Zeit mit der Entwicklung von XML-Schemas. Sieht das für euch richtig aus? Gibt es noch etwas, das ich in Erwägung ziehen könnte?

Antwort

2

Die verfügbaren Namen sind nicht vordefiniert - sie könnten alles sein.

Dies macht es unmöglich, die zweite Form zu verwenden (mit XML-Schema) -, da Sie alle gültigen Namen wissen müssen, dass die Methode

0

Wenn Sie mit einer Schlüssel/Wert-Paar-Sammlung von Elementen arbeiten, ist Ihre erste Option der richtige Weg.

In diesem Fall ist Ihr Element der Name des Typs des Elements in der Sammlung ... Ihr Attribut ist der Schlüssel ... und der Wert ist der Wert.

Zum Beispiel:

<StringCollection> 
    <String name="stringOne">Something</String> 
    <String name="stringTwo">Something else</String> 
</StringCollection> 

Ihre zweite Möglichkeit, ein nicht gruppierten Satz von nicht-verwandten Elementen sei ... nicht das, was Sie wollen.

0

Sieht gut aus. Sie können auch (wenn Werte einfach sind) Unterstützung für Kurzform einschließen < ExtendedProperty name = "name" value = "value" />. So wird zum Beispiel im Frühjahr konfiguriert: