XSD aufräumen - Custom + CustomType entfernen

  • [color=black][font='Calibri,sans-serif'][size=10][size=11][font='Tahoma,sans-serif']Mir ist grad aufgefallen, dass im ebInterface 4.0 XSD noch das Element „Custom“, der Typ „CustomType“ und die Gruppe „Custom“
    enthalten sind, diese jedoch nicht mehr referenziert werden.
    Das sind wohl noch Relikte aus ebInterface 3.0.2 :)

    vg P. Helger
    [/font][/size][/size][/font][/color]

  • Hallo,

    Mir ist gerade folgendes aufgefallen: Mein C# Klasse sieht so aus:

    details.ItemList = new ItemListType[] { itemList };

    Dh. Die ItemList im DetailsType ist ein Array sprich man kann hier mehrmals bis zu 999 Zeilen hineingeben, da der ItemListType die mMn eigentliche Liste der Postionionen enthält und zwar (ItemListType ListLineItemType[]).

    <xs:complexType name="DetailsType">
    <xs:sequence>
    <xs:element ref="HeaderDescription" minOccurs="0"/>
    <!-- [CHANGE] changed unbounded to 999; only up to 999 ListLineItem's are supported! -->
    <xs:element ref="ItemList" maxOccurs="999"/>
    <xs:element ref="FooterDescription" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>

    ändern auf

    <xs:complexType name="DetailsType">

    <xs:element ref="HeaderDescription" minOccurs="0"/>

    <xs:element ref="ItemList" maxOccurs="999"/>
    <xs:element ref="FooterDescription" minOccurs="0"/>

    </xs:complexType>

    sG

  • Nein, das geht leider nicht. sequence gibt nur an, dass die darin enthaltenen Elemente in der angegebenen Reihenfolge erscheinen müssen - einen anderen Unterschied habe ich im Posting nicht gesehen.

    Das Problem im XSD ist einfach, dass es in ebInterface 2 Hierarchieebenen gibt und die Summe aller Positionen, über alle Hierarchieebenen 999 nicht überschreiten darf, das aber in XSD nicht abbildbar ist.

    vg P. Helger

  • 2.) Macht er mir bei der VAT

    public partial class VATType
    {

    private object[] itemsField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Item", typeof (ItemType))]
    [System.Xml.Serialization.XmlElementAttribute("TaxExemption", typeof (string))]
    public object[] Items
    {
    get { return this.itemsField; }
    set { this.itemsField = value; }
    }
    }

    Sprich eine Array of objects nicht lineitem

    Vorschlag:
    <xs:complexType name="VATType">
    <xs:choice>
    <xs:element ref="TaxExemption"/>
    <xs:sequence>
    <xs:element ref="Item" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:choice>
    </xs:complexType>

    ändern auf

    <xs:complexType name="VATType">
    <xs:choice>
    <xs:element ref="TaxExemption"/>
    <xs:sequence>
    <xs:element ref="ItemType" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:choice>
    </xs:complexType>

    sG

  • Nein, das geht leider nicht. sequence gibt nur an, dass die darin enthaltenen Elemente in der angegebenen Reihenfolge erscheinen müssen - einen anderen Unterschied habe ich im Posting nicht gesehen.

    Das Problem im XSD ist einfach, dass es in ebInterface 2 Hierarchieebenen gibt und die Summe aller Positionen, über alle Hierarchieebenen 999 nicht überschreiten darf, das aber in XSD nicht abbildbar ist.

    vg P. Helger

    Ich verstehe nicht den tieferen Sinn davon die Sequence von ListLineItemType in der Sequnce von DetailsType quasi 2x drinnen zu haben.
    Was wäre hier der betriebswirtschaftliche, rechtliche,... Sinn dahinter?


    <xs:complexType name="DetailsType">

    <xs:sequence>

    <xs:element ref="HeaderDescription" minOccurs="0"/>

    <!-- [CHANGE] changed unbounded to 999; only up to 999 ListLineItem's are supported! -->

    <xs:element ref="ItemList" maxOccurs="999"/>

    <xs:element ref="FooterDescription" minOccurs="0"/>

    </xs:sequence>

    </xs:complexType>
    <xs:complexType name="ListLineItemType">
    <xs:sequence>
    <xs:element ref="PositionNumber" minOccurs="0"/>
    <xs:element ref="Description" maxOccurs="unbounded"/>
    <xs:element ref="ArticleNumber" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element ref="Quantity"/>
    <xs:element ref="UnitPrice"/>
    <xs:element ref="TaxRate"/>
    <xs:element ref="DiscountFlag" minOccurs="0"/>
    <xs:element ref="ReductionAndSurchargeListLineItemDetails" minOccurs="0"/>
    <xs:element ref="Delivery" minOccurs="0"/>
    <xs:element ref="BillersOrderReference" minOccurs="0"/>
    <xs:element ref="InvoiceRecipientsOrderReference" minOccurs="0"/>
    <xs:element ref="AdditionalInformation" minOccurs="0"/>
    <xs:element ref="LineItemAmount"/>
    <xs:element ref="ext:ListLineItemExtension" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>


    sG

    PS: Kann man das XML formatieren?

  • Ihr XMLSerialization Framework ist nicht ganz optimal - mein JAXB 2.2.7 macht ein schönes Objekt mit 2 Feldern drauß :)

    @XmlElement(name = "TaxExemption")
    private String taxExemption;
    @XmlElement(name = "Item")
    @Size(min = 1)
    private List item;

    vg P. Helger

    Hmm, eigentlich sollten 3 Felder drinnen sein und zwar TaxedAmount, TaxRate, Amount

    oder ?

    public decimal TaxedAmount
    {
    get { return this.taxedAmountField; }
    set { this.taxedAmountField = value; }
    }

    /// <remarks/>
    public TaxRateType TaxRate
    {
    get { return this.taxRateField; }
    set { this.taxRateField = value; }
    }

    /// <remarks/>
    public decimal Amount

  • 1. Formatieren geht leider nicht - hab mich schon ein bisschen damit gespielt, hab aber keinen Zugriff auf den Server.
    2. Betriebswirtschaftlich und XSD - lustige Assoziation.
    3. Details hat maximal 999 ItemLists, und jede ItemList hat maximal 999 Rechnungszeilen - diese Verschachtelung dient rein der Gruppierung!

    hth P. Helger

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!