XML Schema Wie man Preis und Währung deklariert

8

Ich erstelle ein XML-Schema, das Informationen über Häuser speichert.

Ich möchte die price und die currency speichern.

Es macht Sinn, dies zu erklären, indem ich die Währung als Attribut des Preiselements verwende.

Ich möchte auch die Werte einschränken, die als currency in Pfund, Euro oder Dollar eingegeben werden können.

EG:

%Vor%

Im Moment deklariere ich das in meinem XML Schema als:

%Vor%

Das Problem, das ich damit habe:

  • Ich bin mir nicht sicher, ob dies das Attributelement auf pounds, euros or dollars beschränken wird.
  • Ich kann nicht scheinen, ein type auf dem Preis zu einem Doppel zu spezifizieren, wie ich wegen des Fehlers wünschen würde:

      

    Element 'price' has both a 'type' attribute and a 'anonymous type' child. Only one of these is allowed for an element.

Soll ich es einfach halten und sie als separate Elemente deklarieren:

%Vor%

... oder bin ich auf dem richtigen Weg?

    
Luke 16.01.2012, 17:03
quelle

5 Antworten

2

Im Folgenden wird das price -Element so definiert, dass es einen xs:double -Wert mit einem currency -Attribut hat, dessen Werte auf einen Wert von entweder Pfund, Euro oder Dollar beschränkt sind.

%Vor%     
Mads Hansen 21.01.2012, 03:06
quelle
13

Aus dem von Michael Kay geposteten Link, der auf Ihr Problem angewendet wurde. (Hinweis: Verwenden Sie den Dezimaltyp anstelle von double, um Präzisionsfehler zu vermeiden.)

%Vor%     
user849425 24.01.2012 22:59
quelle
4

Sie möchten einen "komplexen Typ mit einfachem Inhalt". Hier finden Sie ein Beispiel:

Ссылка

    
Michael Kay 16.01.2012 23:48
quelle
3

oder als Erweiterung von Michaels Antwort:

%Vor%

wenn Sie es in einem Tag möchten. Dadurch wird das Attribut mit Aufzählung einfach zu einem Dezimaltyp hinzugefügt, sodass das gewünschte Ergebnis erzielt wird.

    
Igarioshka 26.01.2012 10:13
quelle
0

Sehen Sie sich die Implementierung der SOAP-API von PayPal als Praxis an.

Der Service definiert eine Reihe von Codes für Währungen (CurrencyCodeType definiert in eBLBaseComponents.xsd) nach dem ISO-4217-Standard .

AmountType (definiert von CoreComponentTypes.xsd) ist eine Zusammensetzung eines Double mit einem Attribut von currencyType.

Ich würde empfehlen, einen ähnlichen Ansatz in Ihrer Anwendung zu verwenden und die akzeptablen Währungen in Ihrer Geschäftslogik und nicht im Schema einzuschränken.

Prost!

    
cdelargy 26.01.2012 06:59
quelle

Tags und Links