Η σελίδα είναι διαθέσιμη και στα: enEnglish

Ενημέρωση

Μπορείτε να χρησιμοποιήσετε τον Data Feed Validator για να ελέγξετε την εγκυρότητα του XML Feed με βάση τις προδιαγραφές του Skroutz.

Προδιαγραφές XML Edit the file on GitHub

To παρόν έχει σαν σκοπό να περιγράψει την δομή και την λειτουργικότητα που πρέπει να έχει το XML που παρέχει ένα ηλεκτρονικό κατάστημα στο Skroutz. Η δομή του XML δεν χρειάζεται να είναι συγκεκριμένη αρκεί να περιέχονται τουλάχιστον τα απαραίτητα πεδία όπως αυτά περιγράφονται στην αντίστοιχη ενότητα.

Πίνακας περιεχομένων

Απαιτήσεις

Σε γενικές γραμμές το XML αρχείο είναι απαραίτητο να πληροί τις εξής προδιαγραφές:

  • Να καθορίζει το encoding.
  • Να παρέχει πληροφορία την ώρα που δημιουργήθηκε.
  • Να είναι valid (μπορείτε να το ελέγξετε εδώ).
  • Να είναι σε συμπιεσμένη μορφή (zip ή gzip) αν το μέγεθος του υπερβαίνει τα 10MB.
  • Να μην επαναλαμβάνει τα ίδια προϊόντα (δείτε περισσότερα εδώ).
  • Να περιλαμβάνει τον Φ.Π.Α στις τιμές.

Εδώ μπορείτε να δείτε παράδειγμα ενός XML και εδώ μπορείτε να βρείτε το XSD για λόγους validation του παραγόμενου XML.

Εναλλακτικά, μπορείτε να ελέγξετε το XML σας με βάση τις προδιαγραφές του Skroutz.

Τεχνικά Χαρακτηριστικά

SkroutzBot

Το Skroutz χρησιμοποιεί web crawler για να κατεβάζει το XML. Μπορεί να αναγνωριστεί από το HTTP header "User-Agent: SkroutzBot". Ουσιαστικά δεν πρόκειται για bot (www.robotstxt.org), παρόλο που αποκαλείται έτσι.

Το SkroutzBot δεν κάνει crawl όλη τη σελίδα παρά μόνο τα παρακάτω URLs:

  • το link του αρχείου XML
  • τα links των φωτογραφιών στο XML: Το Skroutz κατεβάζει τις εικόνες των προϊόντων.
  • τα links των προϊόντων στο XML: Το Skroutz κάνει δειγματοληπτικό έλεγχο των προϊόντων.

Το SkroutzBot χρησιμοποιεί τις ακόλουθες IPs:

  • IPv6: 2a03:e40::/32
  • IPv4: 185.6.76.0/22

Θα πρέπει να δοθεί προσοχή, προκειμένου το SkroutzBot να έχει πάντα πρόσβαση στις παραπάνω IPs, χωρίς κάποιο όριο (rate limit). Το domain στο οποίο φιλοξενείται το xml δεν παίζει ρόλο.

ΣΗΜΕΙΩΣΗ

Ενδέχεται να χρειαστεί να εξαιρέσετε τις IPs που χρησιμοποιεί το SkroutzBot από εργαλεία που κάνουν rate-limit όπως τα BitNinja, Cloudflare κλπ.

Το SkroutzBot θα διατηρήσει έναν λογικό ρυθμό requests.

To SkroutzBot αποδέχεται https links, αλλά μόνο εκείνα τα οποία έχουν ένα intermediate certificate που είναι signed από ένα root certificate ενός CA(Certificate Authority).

Μπορείτε να επιβεβαιώσετε την ορθότητα του certificate σας εδώ ή εδώ.

To SkroutzBot δεν κάνει HTTP ή άλλης μορφής authentication. Η προτεινόμενη λύση είναι η εξαίρεση συγκεκριμένων IPs και η προσθήκη τους στις έμπιστες IPs (whitelist).

Τέλος, το SkroutzBot στέλνει Accept-Encoding header, και μπορεί να διαχειριστεί συμπιεσμένα αρχεία σε μορφή gzip ή zip. Ο server του καταστήματος δεν πρέπει να απαγορεύει την πρόσβαση στο SkroutzBot εάν χρησιμοποιεί συμπίεση gzip ή zip.

ΣΗΜΕΙΩΣΗ

Ένας εύκολος τρόπος για να προσομοιώσετε το SkroutzBot είναι να χρησιμοποιήσετε την εντολή:

curl -H 'user-agent: SkroutzBot v1.0' -H 'accept: application/xml,application/gzip,text/csv,application/xhtml+xml;q=0.9,*/*;q=0.8' -H 'accept-encoding: gzip' -i -L --compressed <feed_file_url>

Skroutz ImageBot

Το Skroutz χρησιμοποιεί bot για να κατεβάζει τις εικόνες των προϊόντων και μπορεί να αναγνωριστεί από το HTTP header "User-Agent: Skroutz ImageBot v1".

Για να έχει πάντα πρόσβαση στις εικόνες, βεβαιωθείτε πως έχετε προσθέσει το "Skroutz ImageBot" στη λίστα εμπιστοσύνης bots (whitelist).

ΣΗΜΕΙΩΣΗ

Ένας εύκολος τρόπος για να προσομοιώσετε το Skroutz ImageBot είναι να χρησιμοποιήσετε την εντολή curl -I -A "Skroutz ImageBot v1" <image_url>.

Data Feed

Για να μπορεί να γίνει δεκτό το Data Feed θα πρέπει να περιέχει όλα τα υποχρεωτικά πεδία που πληρούν τις προδιαγραφές όπως αυτές ορίζονται παρακάτω.

XML Declaration

Το XML θα πρέπει να περιλαμβάνει οπωσδήποτε το encoding του αρχείου και την ημερομηνία δημιουργίας. Η ημερομηνία δημιουργίας χρησιμοποιείται για να εξακριβώσουμε αν κάποιο αρχείο περιέχει ενημερωμένα δεδομένα ή όχι.

Παράδειγμα
<?xml version="1.0" encoding="UTF-8"?>
<mywebstore>
   <created_at>2010-04-08 12:32</created_at>
   ...
</mywebstore>
Σημείωση

To encoding που δηλώνετε στο declaration πρέπει να είναι το πραγματικό. Αν π.χ. δηλώνετε ISO-8859-7, το αρχείο δεν μπορεί να περιέχει χαρακτήρες από άλλο character set γιατί υπάρχει ενδεχόμενο να μην είναι έγκυρο, με αποτέλεσμα τη μη ανανέωση των προϊόντων.

Σημείωση

Αν τα αρχεία δεν παράγονται σε πραγματικό χρόνο, θα πρέπει να φροντίσετε η διαδικασία αυτή να γίνεται τουλάχιστον μία φορά την ημέρα.

Πεδία

Στον παρακάτω πίνακα μπορείτε να δείτε περιληπτικά τα πεδία που αναγνωρίζονται από το Skroutz:

Η HTML δεν επιτρέπεται σε κανένα από τα πεδία του XML.

Όνομα Τύπος Μέγιστο Μήκος Υποχρεωτικό Παράδειγμα
Unique ID String 200 Ναι 322
Name String 300 Ναι Samsung Galaxy S4 16GB
Product Link String 1000 Ναι https://www.someurl.com/products/322.html
Image Link String 400 Ναι https://www.someurl.com/images/322.jpg
Additional Image Link String 400 Όχι1 https://www.someurl.com/images/322/front_view.jpg
Category Name String 250 Ναι Κινητά τηλέφωνα
Price Decimal - (έως 2 δεκαδικά ψηφία) Ναι 23.22
VAT Rate Decimal - (έως 2 δεκαδικά ψηφία) Όχι 24.00
Availability String 60 Ναι Σε 2 μέρες
Manufacturer String 100 Ναι Samsung
MPN / ISBN String 80 Ναι GF322234
EAN / Barcode Integer 13 Όχι 9780471117094
Size String 500 Όχι1 36,37,38 1/2,40,44
Weight Decimal - Όχι2 3200
InStock
Deprecated
List - Όχι Y
Shipping Costs Decimal - Όχι 3.22
Color String 100 Όχι3 Μαύρο
Description String 1000 Όχι4 Σετ 3 τρόλεϊ. Οι βαλίτσες διαθέτουν 4 διπλές ρόδες και κλειδαριά με συνδυασμό. Με δυο ανατομικές λαβές, μια στο επάνω μέρος και μια στο πλάι. Διαθέτουν εσωτερικό χώρισμα και θήκες οργάνωσης. Βαλίτσα 70 cm: Διαστάσεις 48 x 70 x 28 cm, Βάρος 4,8 Kg, Χωρητικότητα 94lt. Βαλίτσα 60 cm: Διαστάσεις 41 x 58 x 25 cm, Βάρος 4,1 Kg, Χωρητικότητα 60lt. Βαλίτσα Καμπίνας: Διαστάσεις 35 x 55 x 20 cm, Βάρος 2,7 Kg, Χωρητικότητα 38lt. Υλικό: Light weight ABS και μηχανισμός αλουμινίου.
Quantity Integer 8 Όχι 10
Size Variations Embedded XML Element - Όχι5 <variations>
  <variation>...</variation>
  <variation>...</variation>
</variations>

1 Υποχρεωτικό για τις κατηγορίες μόδας όπου υπάρχουν νούμερα, επιπρόσθετες εικόνες
2 Υποχρεωτικό για τα καταστήματα που χρησιμοποιούν κανόνες βάρους για τον υπολογισμό των μεταφορικών τους
3 Υποχρεωτικό για όλες τις κατηγορίες μόδας
4 Υποχρεωτικό για όλα τα προϊόντα
5 Προτείνεται για όλα τα προϊόντα όπου τα νούμερα είναι υποχρεωτικά

Unique ID

To πεδίο αυτό είναι το μοναδικό αναγνωριστικό του προϊόντος στο κατάστημά σας. Η τιμή του πεδίου αυτού είναι υποχρεωτικό να παραμείνει ίδια καθ' όλη τη διάρκεια "ζωής" του προϊόντος.

Αν αλλάξει o τίτλος ενός προϊόντος ώστε να αφορά διαφορετικό μοντέλο (π.χ. από Sony LDF700, γίνει Sony LDF800), το προϊόν θα απενεργοποιηθεί. Τα Unique ID πρέπει πάντα να αφορούν το ίδιο προϊόν.

Το Unique ID δεν μπορεί να υπάρχει σε παραπάνω από ένα προϊόν. Αν υπάρχει παραπάνω από μία φορά μέσα στο feed, τότε το προϊόν θα αποθηκευθεί με τα στοιχεία της πρώτης σε σειρά εμφάνισης.

Σε περίπτωση που το commerce engine σας υποστηρίζει παραπάνω από μία γλώσσες, τα προϊόντα θα πρέπει να περιλαμβάνονται ΜΟΝΟ μία φορά και κατά προτίμηση στα Ελληνικά.

Σε περίπτωση που το κατάστημα σας χρησιμοποιεί την πλατφόρμα του WooCommerce και έχετε variation products με χρώμα, προτείνουμε το Unique ID να είναι στην ακόλουθη μορφή: <parent product ID>-<attribute term ID>. Περισσότερες πληροφορίες μπορείτε να βρείτε στο Skroutz Analytics for WooCommerce plugin.

Παράδειγμα
<UniqueID>32</UniqueID>
<product id="44">...</product>
<PRODUCTID>232AD</PRODUCTID>

Name

Είναι ο τίτλος του προϊόντος. Στον τίτλο είναι απαραίτητο να περιλαμβάνονται όλα τα χαρακτηριστικά που αφορούν το προϊόν όπως π.χ. κατασκευαστής, μοντέλο, χρώμα, έκδοση, κατάσταση. Όσο πιο ακριβής είναι ο τίτλος του προϊόντος, τόσο πιο γρήγορα θα γίνει η ταξινόμησή του.

Ο τίτλος των προϊόντων που δεν είναι καινούρια θα πρέπει οπωσδήποτε να αναφέρει την κατάστασή τους (ανακατασκευασμένα, μεταχειρισμένα, εκθεσιακά κτλ), διαφορετικά θα απενεργοποιούνται από την ομάδα περιεχομένου.

Παράδειγμα
<Name>Nokia 5800 XpressMusic</Name>
<title>Nokia 5800 XpressMusic</title>

Στον τίτλο των προϊόντων δεν επιτρέπεται η αναφορά σε πληροφορίες που αφορούν στην εγγύηση του προϊόντος, στο κόστος των μεταφορικών εξόδων ή του τρόπου πληρωμής του, σε ασαφή δώρα / γενικές προσφορές που έχει επιλέξει το κατάστημα για να ενισχύσει την πώληση του προϊόντος και σε κάθε είδους προωθητική (marketing) ενέργεια.

Είναι ο σύνδεσμος που οδηγεί στη σελίδα του καταστήματός σας για το συγκεκριμένο προϊόν. Θα πρέπει να είναι έγκυρος σύνδεσμος και να ξεκινάει με https.

Τα links ΔΕΝ πρέπει να είναι URL-encoded.

O σύνδεσμος αυτός είναι απαραίτητο να οδηγεί σε σελίδα προϊόντος και όχι σε κατηγορία ή συλλογή προϊόντων.

Στο σύνδεσμο του εκάστοτε προϊόντος δεν χρειάζεται να περιέχεται το session id της σύνδεσης.

Σε περίπτωση που δεν έχετε ηλεκτρονικό κατάστημα, θα πρέπει να βάλετε ενδεικτικά (dummy) links σε έγκυρη μορφή URL.

Λάθος (περιέχει session id)
<url>https://www.mydomain.com/products/product.php?itemid=1&amp;osCsid=77777d01474f6df1e9d0775900409ddd&amp;page=1</url>
Σωστό (το session id έχει αφαιρεθεί)
<url>https://www.mydomain.com/products/product.php?itemid=1&amp;page=1</url>
Παράδειγμα
<link>https://www.mydomain.com/products/1</link>
<url>https://www.mydomain.com/products/product.php?itemid=1</url>
<url><![CDATA[https://www.mydomain.com/products/product.php?itemid=1&amp;somevar=3]]></url>
<url>https://www.mydomain.com/products/product.php?itemid=1&amp;amp;somevar=3</url>

Είναι η εικόνα (φωτογραφία) του προϊόντος. Πρέπει να είναι σύνδεσμος σε εικόνα και να ξεκινάει με https. Scripts που παράγουν εικόνες υπάρχει πιθανότητα να μη λειτουργούν σωστά, γι' αυτό και είναι προτιμητέο ο σύνδεσμος να οδηγεί στο πραγματικό αρχείο.

Όσο πιο μεγάλη είναι η εικόνα, τόσο το καλύτερο. Οι εικόνες αποθηκεύονται από το Skroutz και δημιουργείται ένα κατάλληλου μεγέθους thumbnail.

Η αποστολή φωτογραφιών με ενσωματωμένο το λογότυπο του καταστήματος ή οποιοδήποτε υδατογράφημα δεν επιτρέπεται.

Τα links ΔΕΝ πρέπει να είναι URL-encoded.

Αποφύγετε να βάζετε "Νο Image" εικόνες γιατί αν αργότερα την αλλάξετε, το Skroutz δεν θα την ανανεώσει. Αν κάποιο προϊόν σας δεν έχει φωτογραφία, στείλτε ως σύνδεσμο το κενό string. Όταν αργότερα προστεθεί η εικόνα, το σύστημα θα καταλάβει τη διαφορά και θα την ανανεώσει.

Η φωτογραφία δεν πρέπει να έχει περιθώρια. Το αντικείμενο της φωτογραφίας πρέπει να έχει τουλάχιστον μία από τις δύο διαστάσεις μεγαλύτερη από 1000 pixels.

Τα links πρέπει να δημοσίως προσβάσιμα, ανεξάρτητα του domain στο οποίο φιλοξενούνται.

Παράδειγμα
<image>https://www.mydomain.com/photos/1.jpg</image>
<imageurl>https://www.mydomain.com/photos/b&amp;amp;b.jpg</imageurl>
<url><![CDATA[https://www.mydomain.com/photos/b&amp;b.jpg]]></url>

Δείτε περισσότερες οδηγίες και παραδείγματα σχετικά με την εικόνα του προϊόντος.

Χρησιμοποιείται για επιπρόσθετες φωτογραφίες του προϊόντος. Επιπλέον φωτογραφίες του ίδιου προϊόντος από διαφορετικές οπτικές γωνίες ή με διαφορετικό τρόπο παρουσίασης ή συνδυασμοί των παραπάνω ενισχύουν την παρουσίαση του προϊόντος στο Skroutz.

Το πεδίο είναι προαιρετικό αλλά συνιστάται η χρήση του, με εξαίρεση τα προϊόντα που ανήκουν στις κατηγορίες της Μόδας, όπου η συμπλήρωση των επιπρόσθετων φωτογραφιών είναι υποχρεωτική, εφόσον το κατάστημα τις προβάλλει στη σελίδα των προϊόντων του. Μπορεί να εμφανίζεται πολλές φορές σε ένα feed, μια φορά για κάθε διαφορετική φωτογραφία. Ισχύουν οι ίδιοι περιορισμοί με το Image Link.

Η φωτογραφία δεν πρέπει να έχει περιθώρια. Το αντικείμενο της φωτογραφίας πρέπει να έχει τουλάχιστον μία από τις δύο διαστάσεις μεγαλύτερη από 1000 pixels.

Παράδειγμα
<image>https://www.mydomain.com/photos/1.jpg</image>
<imageurl>https://www.mydomain.com/photos/b&amp;amp;b.jpg</imageurl>
<additional_imageurl>https://www.mydomain.com/photos/product1/front.jpg</additional_imageurl>
<additional_imageurl>https://www.mydomain.com/photos/product1/sides.jpg</additional_imageurl>
<additional_imageurl>https://www.mydomain.com/photos/product1/packaged.jpg</additional_imageurl>
<url><![CDATA[https://www.mydomain.com/photos/b&amp;b.jpg]]></url>

Category Name

Είναι η κατηγορία του προϊόντος. Είναι απαραίτητο να περιλαμβάνει όλη τη διαδρομή μέχρι την κατηγορία του προϊόντος. Π.χ. αν το προϊόν ανήκει στην κατηγορία Εσωτερικός Σκληρός Δίσκος, το πεδίο θα έχει τιμή Ηλεκτρονικοί Υπολογιστές > Hardware > Εσωτερικοί Σκληροί Δίσκοι.

Αποφύγετε διφορούμενες κατηγορίες που περιλαμβάνουν διαφορετικά προϊόντα μεταξύ τους (π.χ. "Εκτυπωτές & Scanner"), όπου η ταξινόμηση θα καθυστερεί λόγω των επιπλέον ελέγχων που χρειάζεται να γίνουν για να τοποθετηθούν τα προϊόντα στις σωστές κατηγορίες.

Παράδειγμα
<category>Κινητή Τηλεφωνία > Bluetooth</category>
<category_path>Ηλεκτρονικοί Υπολογιστές - Hardware - Επεξεργαστές</category_path>

Price

Είναι η τιμή του προϊόντος με Φ.Π.Α.. Αν η τιμή δεν περιλαμβάνει Φ.Π.Α., θα προστεθεί το ανώτατο ποσοστό για όλα τα είδη των προϊόντων.

Η τιμή θα πρέπει να είναι ίδια για όλους και να μην έχει προϋποθέσεις εφαρμογής.

Το πεδίο τιμής μπορεί να δεχτεί μέχρι 2 δεκαδικά ψηφία.

VAT Rate

Στο πεδίο αυτό μπορείτε να συμπληρώσετε τον συντελεστή Φ.Π.Α. του προϊόντος ως ποσοστό.

Αυτό το πεδίο δέχεται τιμές στο διάστημα μεταξύ του 1 και του 100, ή ίση του 0.

Το πεδίο συντελεστή Φ.Π.Α. μπορεί να δεχτεί μέχρι 2 δεκαδικά ψηφία.

Παράδειγμα
<name>Σετ 3 Βαλίτσες BENZI Μπλε BZ5581</name>
<price>150.0</price>
<vat>24.0</vat>

Availability

Το πεδίο αυτό πρέπει να αναφέρει την έκφραση διαθεσιμότητας που χρησιμοποιείτε και στο site σας.

To Skroutz χρησιμοποιεί ένα προκαθορισμένο σύνολο από εκφράσεις διαθεσιμότητας, οι οποίες διασταυρώνονται με αυτές που περιλαμβάνονται στο XML σας.

Άμεσα διαθέσιμο
αφορά προϊόντα τα οποία είναι άμεσα διαθέσιμα για Express παράδοση. Η ειδική σήμανση Express παράδοση εμφανίζεται μόνο στην περίπτωση που το κατάστημα έχει ενεργή την αντίστοιχη υπηρεσία στο Skroutz και το προϊόν πληροί τα υπόλοιπα κριτήρια συμμετοχής στην υπηρεσία.
Όταν η υπηρεσία δεν είναι ενεργή για το κατάστημα, τότε τα προϊόντα, για τα οποία έχει οριστεί η συγκεκριμένη διαθεσιμότητα, θα προβάλλονται στο Skroutz με την ένδειξη Διαθέσιμο.
Όσα προϊόντα δεν επιθυμείτε να διατίθενται στην Express παράδοση, θα πρέπει να καταχωρηθούν με μία από τις επόμενες διαθεσιμότητες.
Διαθέσιμο από 1 έως 3 ημέρες
αφορά προϊόντα τα οποία είναι διαθέσιμα στο κατάστημα ή για αποστολή από την αποθήκη ή τον προμηθευτή και μπορούν να παραδοθούν εντός του συγκεκριμένου διαστήματος.
Διαθέσιμο από 4 έως 10 ημέρες
αφορά προϊόντα τα οποία δεν είναι διαθέσιμα στο κατάστημα και μπορούν να παραδοθούν εντός του συγκεκριμένου διαστήματος.
Διαθέσιμο από 10 έως 30 ημέρες
αφορά προϊόντα τα οποία δεν υπάρχουν σε απόθεμα και παραδίδονται μόνο κατόπιν παραγγελίας. Σε κάθε περίπτωση ο χρόνος παράδοσης δε μπορεί να ξεπερνάει τις 30 ημερολογιακές ημέρες που είναι το μέγιστο όριο που ορίζεται από τη νομοθεσία για το ηλεκτρονικό εμπόριο και τις πωλήσεις από απόσταση.
Παράδειγμα
<availability>Άμεσα διαθέσιμο</availability>

Manufacturer

Ο κατασκευαστής του προϊόντος.

Ο κατασκευαστής θα πρέπει να περιλαμβάνεται και στον τίτλο, ανεξάρτητα από το αν περιλαμβάνεται και στο πεδίο κατασκευαστή.

Ο κατασκευαστής θα πρέπει να αναφέρεται στον πραγματικό κατασκευαστή του προϊόντος και όχι για τον κατασκευαστή για τον οποίο προορίζεται. Για παράδειγμα μια θήκη κινητού τηλεφώνου για το Apple iPhone που κατασκευάζεται από τον κατασκευαστή Belkin, χρειάζεται να αναφέρει τον Belkin ως κατασκευαστή και όχι την Apple.

MPN / ISBN

Είναι ο μοναδικός κωδικός που δίνει ο κατασκευαστής στα προϊόντα του. Χρησιμοποιείται για την ταυτοποίηση των προϊόντων σε περίπτωση που αυτό δεν είναι εμφανές από το μοντέλο.

Το πεδίο αυτό είναι υποχρεωτικό για τις κατηγορίες όπου ο κωδικός του κατασκευαστή είναι σημαντικός για την αναγνώριση και ταξινόμηση του προϊόντος (π.χ. Τηλεοράσεις, Κινητά τηλέφωνα, Ρολόγια Χειρός, Αθλητικά Παπούτσια κτλ)

Αν το προϊόν είναι βιβλίο, το πεδίο αυτό είναι υποχρεωτικό και πρέπει να περιέχει τον αριθμό ISBN του βιβλίου.

Βιβλία που δεν περιέχουν ISBN δεν θα ταξινομούνται.

EAN / Barcode

Ο διεθνής αριθμός είδους (EAN) που χρησιμοποιείται για την ταυτοποίηση των προϊόντων λιανικής.

Αυτό το πεδίο είναι προαιρετικό αλλά συνιστάται για τις κατηγορίες με προϊόντα που είναι του ίδιου είδους αλλά έχουν διαφοροποιήσεις στο βάρος, χρώμα κτλ. Ένα μοναδικό EAN χρησιμοποιείται για κάθε ξεχωριστό προϊόν.

Size

Αν το προϊόν έχει μεγέθη, εδώ χρειάζεται να περιλαμβάνονται όλα τα μεγέθη για τα οποία υπάρχει διαθεσιμότητα χωρισμένα μεταξύ τους με κόμμα.

Π.χ. ένα αθλητικό παπούτσι που υπάρχει στα μεγέθη 38, 39, και 39.5 χρειάζεται να έχει στο XML την παρακάτω εγγραφή:

<size>36,37,38,39.5</size>

Τα μισά μπορούν να δηλώνονται και ως 1/2, π.χ.

<size>36,37,38,39 1/2</size>

Επίσης σε περίπτωση ρούχων τα μεγέθη μπορεί να έχουν ένα από τα παρακάτω format:

<size>XXS, XS, S, M, L, XL, XXL, XXXL</size>
<size>Extra Small, Small, Medium, Large, Extra Large</size>
<size>00, 0, 2, 4, 6, 8, 10, 12, 14, 16</size>

Αν ένα προϊόν σας κάνει για παραπάνω από ένα μεγέθη (π.χ. κάλτσες), τότε μπορείτε να το δηλώσετε ως range χρησιμοποιώντας την παύλα (-). Παράδειγμα:

<size>37-39,42-45</size>

Τέλος, αν ένα προϊόν έχει παραπάνω από ένα μεγέθη (π.χ. παντελόνια) τότε μπορούν να δηλωθούν και τα δύο με την χρήση της καθέτου (/). Παράδειγμα:

<size>37/42,37/45</size>

Προϊόντα όπου το μέγεθος είναι απαραίτητο και δεν το περιλαμβάνουν (όπως π.χ. υποδήματα, πουκάμισα, κτλ) δεν θα ταξινομούνται.

Weight

Το βάρος του προϊόντος (πραγματικό ή ογκομετρικό), σε γραμμάρια, που χρησιμοποιείται από την πλατφόρμα σας για τον υπολογισμό του κόστους των μεταφορικών. Αν θέλετε να χρησιμοποιήσετε κιλά μπορείτε να το κάνετε προσθέτοντας kg στο τέλος της τιμής.

Παράδειγμα

Για ένα προϊόν με βάρος 3.2kg, η τιμή του πεδίου βάρους θα είναι:

<weight>3200</weight>

ή

<weight>3.2 kg</weight>

InStock Deprecated

Η κατάσταση του αποθέματος (stock) του προϊόντος.

Y
σημαίνει ότι το προϊόν υπάρχει σε stock, δηλαδή είναι ετοιμοπαράδοτο και υπάρχει στην αποθήκη σας ή στο κατάστημά σας.
N
σημαίνει ότι το προϊόν δεν υπάρχει σε stock.

Όταν δεν υπάρχει πληροφορία από το κατάστημα, το πεδίο αυτό θεωρείται ότι έχει την τιμή N.

Shipping Costs

Αν γνωρίζετε το ακριβές κόστος παράδοσης (π.χ. έχετε σταθερά μεταφορικά 5 ευρώ), μπορείτε να το βάλετε εδώ. Για δωρεάν μεταφορικά, η τιμή του πεδίου πρέπει να είναι 0.

Το κόστος αυτό είναι ΑΝΕΞΑΡΤΗΤΟ του βάρους και της τοποθεσίας αποστολής. Αν τα μεταφορικά σας έχουν προϋποθέσεις, αυτό το πεδίο είναι υποχρεωτικό να είναι κενό.

Αν τα μεταφορικά δεν ισχύουν έστω και για ένα προϊόν, θα απενεργοποιηθούν για όλα τα προϊόντα του XML.

Color

To χρώμα του προϊόντος. Το πεδίο χρώματος λειτουργεί ως χαρακτηριστικό του συγκεκριμένου προϊόντος και δεν μπορεί να περιλαμβάνει διαφορετικές καταχωρίσεις προϊόντων.

Οφείλει να περιέχει το χρώμα του προϊόντος που αποτυπώνεται στην εικόνα που το συνοδεύει.

Εφόσον για κάποιο μοντέλο υπάρχουν περισσότερα του ενός χρώματα, αυτά πρέπει να στέλνονται ως διαφορετικά προϊόντα με ξεχωριστό Unique ID.

Σε περίπτωση που το κατάστημα σας χρησιμοποιεί την πλατφόρμα του WooCommerce και έχετε variation products με χρώμα, προτείνουμε το Unique ID να είναι στην ακόλουθη μορφή: <parent product ID>-<attribute term ID>. Περισσότερες πληροφορίες μπορείτε να βρείτε στο Skroutz Analytics for WooCommerce plugin.

Παράδειγμα
<color>Black</color>
<color>μαύρο</color>

Description

Στο πεδίο αυτό μπορείτε να συμπληρώσετε επιπρόσθετα χαρακτηριστικά και πληροφορίες για τη χρήση του προϊόντος.

Το πεδίο είναι προαιρετικό αλλά συνιστάται η χρήση του.

Παράδειγμα
<name>Σετ 3 Βαλίτσες BENZI Μπλε BZ5581</name>
<description>
  Σετ 3 τρόλεϊ. Οι βαλίτσες διαθέτουν 4 διπλές ρόδες και κλειδαριά με συνδυασμό. Με δυο ανατομικές λαβές, μια στο επάνω
  μέρος και μια στο πλάι. Διαθέτουν εσωτερικό χώρισμα και θήκες οργάνωσης. Βαλίτσα 70 cm: Διαστάσεις 48 x 70 x 28 cm,
  Βάρος 4,8 Kg, Χωρητικότητα 94lt. Βαλίτσα 60 cm: Διαστάσεις 41 x 58 x 25 cm, Βάρος 4,1 Kg, Χωρητικότητα 60lt. Βαλίτσα
  Καμπίνας: Διαστάσεις 35 x 55 x 20 cm, Βάρος 2,7 Kg, Χωρητικότητα 38lt. Υλικό: Light weight ABS και μηχανισμός
  αλουμινίου.
</description>

Quantity

Στο πεδίο αυτό μπορείτε να συμπληρώσετε την ποσότητα του προϊόντος που έχετε διαθέσιμη για πώληση μέσω του Skroutz.

Το πεδίο δέχεται ακέραιες τιμές μεγαλύτερες ή ίσες του 0 και μικρότερες του 10000000.

Αν το προϊόν δεν είναι διαθέσιμο, τότε η ενδεδειγμένη τιμή είναι 0.

Παράδειγμα
<name>Σετ 3 Βαλίτσες BENZI Μπλε BZ5581</name>
<quantity>10</quantity>

Σε προϊόντα που περιέχουν μεγέθη, συνιστάται η πόσοτητα να είναι το άθροισμα των διαθέσιμων μεγεθών. Παράδειγμα, αν έχουμε 10 τεμάχια Medium, 15 τεμάχια Large και 5 τεμάχια XLarge:

<size>M, L, XL</size>
<quantity>30</quantity>

Πεδία Size Variation

Το συγκεκριμένο πεδίο είναι μία συμπληρωματική προσθήκη στο παρόν αρχείο XML. Στο πεδίο size variations προστίθενται πολλαπλά εμφωλευμένα πεδία που κάθε ένα αναπαριστά ένα συγκεκριμένο μέγεθος του προϊόντος. Τονίζεται ότι προς το παρόν τα υπόλοιπα πεδία πρέπει να κρατήσουν την ίδια ακριβώς μορφή και λειτουργικότητα με το παρόν αρχείο XML που αποστέλλεται. Το ίδιο ισχύει και για τα πεδία που σχετίζονται με την προσθήκη των size variations (availability, size, quantity, link, price, mpn και ean).

Στον παρακάτω πίνακα μπορείτε να δείτε περιληπτικά τα πεδία που αφορούν τα size variations και αναγνωρίζονται από το Skroutz:

Τα size variations μπορούν να χρησιμοποιηθούν μόνο για προϊόντα που διατίθενται σε διαφορετικά μεγέθη.

Η χρήση HTML δεν επιτρέπεται σε κανένα από τα πεδία των size variations.

Όνομα Τύπος Μέγιστο Μήκος Υποχρεωτικό Δοκιμαστικό1 Παράδειγμα
Variation Unique ID String 200 Ναι Όχι 12431.XL
Variation Availability String 100 Ναι Όχι Σε 2 μέρες
Variation Size String 64 Ναι Όχι M
Variation Quantity Integer 8 Ναι Όχι 10
Variation Price Decimal - (up to 2 decimal places) Όχι Όχι 23.22
Variation Link String 2000 Όχι Ναι https://www.someurl.co.uk/products/322.html
Variation MPN String 80 Όχι Ναι GF322234
Variation EAN / Barcode Integer 80 Όχι Ναι 9780471117094

1 Tα Δοκιμαστικά (Beta) πεδία προτείνεται να εισαχθούν στα size variations. Ωστόσο οι τιμές τους δεν θα υιοθετηθούν αρχικά αλλά Θα χρησιμοποιηθούν οι τιμές από τα αντίστοιχα πεδία του προϊόντος (Product). Επιπλέον τα συγκεκριμένα πεδία μπορεί να αφαιρεθούν από το XML αν κριθεί απαραίτητο.

Variation Unique ID

To πεδίο αυτό είναι το μοναδικό αναγνωριστικό του size variation στο κατάστημά σας. Η τιμή του πεδίου αυτού είναι υποχρεωτικό να παραμείνει ίδια καθ' όλη τη διάρκεια "ζωής" του size variation.

Το Variation Unique ID δεν μπορεί να υπάρχει σε παραπάνω από ένα size variation. Αν υπάρχει παραπάνω από μία φορά μέσα στο feed, τότε το size variation θα αποθηκευθεί με τα στοιχεία της πρώτης σε σειρά εμφάνισης.

Σε περίπτωση που το commerce engine σας υποστηρίζει παραπάνω από μία γλώσσες, τα προϊόντα θα πρέπει να περιλαμβάνονται ΜΟΝΟ μία φορά και κατά προτίμηση στα Ελληνικά.

Παράδειγμα
<variationid>12431.XL</variationid>

Variation Availability

Το πεδίο αυτό πρέπει να αναφέρει την έκφραση διαθεσιμότητας που χρησιμοποιείτε και στο site σας.

To Skroutz χρησιμοποιεί ένα προκαθορισμένο σύνολο από εκφράσεις διαθεσιμότητας, οι οποίες διασταυρώνονται με αυτές που περιλαμβάνονται στο XML σας.

Άμεσα διαθέσιμο
αφορά size variations τα οποία είναι άμεσα διαθέσιμα για Express παράδοση. Η ειδική σήμανση Express παράδοση εμφανίζεται μόνο στην περίπτωση που το κατάστημα έχει ενεργή την αντίστοιχη υπηρεσία στο Skroutz και το προϊόν πληροί τα υπόλοιπα κριτήρια συμμετοχής στην υπηρεσία.
Όταν η υπηρεσία δεν είναι ενεργή για το κατάστημα, τότε τα προϊόντα, για τα οποία έχει οριστεί η συγκεκριμένη διαθεσιμότητα, θα προβάλλονται στο Skroutz με την ένδειξη Διαθέσιμο.
Όσα προϊόντα δεν επιθυμείτε να διατίθενται στην Express παράδοση, θα πρέπει να καταχωρηθούν με μία από τις επόμενες διαθεσιμότητες.
Διαθέσιμο από 1 έως 3 ημέρες
αφορά size variations τα οποία είναι διαθέσιμα στο κατάστημα ή για αποστολή από την αποθήκη ή τον προμηθευτή και μπορούν να παραδοθούν εντός του συγκεκριμένου διαστήματος.
Διαθέσιμο από 4 έως 10 ημέρες
αφορά size variations τα οποία δεν είναι διαθέσιμα στο κατάστημα και μπορούν να παραδοθούν εντός του συγκεκριμένου διαστήματος.
Διαθέσιμο από 10 έως 30 ημέρες
αφορά size variations τα οποία δεν υπάρχουν σε απόθεμα και παραδίδονται μόνο κατόπιν παραγγελίας. Σε κάθε περίπτωση ο χρόνος παράδοσης δε μπορεί να ξεπερνάει τις 30 ημερολογιακές ημέρες που είναι το μέγιστο όριο που ορίζεται από τη νομοθεσία για το ηλεκτρονικό εμπόριο και τις πωλήσεις από απόσταση.
Παράδειγμα
<availability>Άμεσα διαθέσιμο</availability>

Variation Size

Το πεδίο αυτό πρέπει να αναφέρει το μέγεθος για ένα συγκεκριμένο size variation.

Π.χ. ένα αθλητικό παπούτσι που υπάρχει στo μεγέθος 38 χρειάζεται να έχει στο XML την παρακάτω εγγραφή:

<size>38</size>

Τα μισά μπορούν να δηλώνονται και ως 1/2, π.χ.

<size>38 1/2</size>

Επίσης σε περίπτωση ρούχων τα μεγέθη μπορεί να έχουν ένα από τα παρακάτω format:

<size>XL</size>
<size>Extra Large</size>
<size>10</size>

Αν ένα size variation έχει αναγνωριστικό για ένα μέγεθος διαστημα (π.χ. κάλτσες), τότε μπορείτε να το δηλώσετε ως range χρησιμοποιώντας την παύλα (-). Παράδειγμα:

<size>5.5-6.5</size>

Τέλος, αν ένα size variation έχει παραπάνω από ένα αναγνωριστικά για ένα μεγέθος (π.χ. παντελόνια) τότε μπορούν να δηλωθούν και τα δύο με την χρήση της καθέτου (/). Παράδειγμα:

<size>5.5/42</size>

Size variations όπου το μέγεθος είναι απαραίτητο και δεν το περιλαμβάνουν (όπως π.χ. υποδήματα, πουκάμισα, κτλ) δεν θα ταξινομούνται.

Variation Quantity

Στο πεδίο αυτό μπορείτε να συμπληρώσετε την ποσότητα του size variation που έχετε διαθέσιμη για πώληση μέσω του Skroutz.

Το πεδίο δέχεται ακέραιες τιμές μεγαλύτερες ή ίσες του 0 και μικρότερες του 10000000.

Αν το size variation δεν είναι διαθέσιμο, τότε η ενδεδειγμένη τιμή είναι 0.

Παράδειγμα
<quantity>10</quantity>

Variation Price

Είναι η τιμή του size variation με Φ.Π.Α..

Η τιμή θα πρέπει να είναι ίδια για όλους και να μην έχει προϋποθέσεις εφαρμογής.

Το πεδίο τιμής μπορεί να δεχτεί μέχρι 2 δεκαδικά ψηφία.

Παράδειγμα
<price>23.22</price>
<pricevat>23.22</pricevat>

Είναι ο σύνδεσμος που οδηγεί στη σελίδα του καταστήματός σας για το συγκεκριμένο size variation. Θα πρέπει να είναι έγκυρος σύνδεσμος και να ξεκινάει με https.

Τα links ΔΕΝ πρέπει να είναι URL-encoded.

O σύνδεσμος αυτός είναι απαραίτητο να οδηγεί σε σελίδα προϊόντος και όχι σε κατηγορία ή συλλογή προϊόντων.

Παράδειγμα
<link>https://www.mydomain.com/products/1</link>
<url>https://www.mydomain.com/products/product.php?itemid=1</url>
<url><![CDATA[https://www.mydomain.com/products/product.php?itemid=1&amp;somevar=3]]></url>
<url>https://www.mydomain.com/products/product.php?itemid=1&amp;amp;somevar=3</url>

Variation MPN

Είναι ο μοναδικός κωδικός που δίνει ο κατασκευαστής στα προϊόντα του. Χρησιμοποιείται για την ταυτοποίηση των προϊόντων σε περίπτωση που αυτό δεν είναι εμφανές από το μοντέλο.

Το πεδίο αυτό είναι υποχρεωτικό για τις κατηγορίες όπου ο κωδικός του κατασκευαστή είναι σημαντικός για την αναγνώριση και ταξινόμηση του προϊόντος.

Παράδειγμα
<manufacturersku>GF322234</manufacturersku>
<mpn>GF322234</mpn>

Variation EAN / Barcode

Ο διεθνής αριθμός είδους (EAN) που χρησιμοποιείται για την ταυτοποίηση των προϊόντων λιανικής.

Αυτό το πεδίο είναι προαιρετικό αλλά συνιστάται για τις κατηγορίες με προϊόντα που είναι του ίδιου είδους αλλά έχουν διαφοροποιήσεις στο βάρος, χρώμα κτλ. Ένα μοναδικό EAN χρησιμοποιείται για κάθε ξεχωριστό προϊόν.

Παράδειγμα
<ean>9780471117094</ean>

Data Feed Validator

Μπορείτε να χρησιμοποιήσετε τον Data Feed Validator για να ελέγξετε το XML Feed σας ως προς τη συμβατότητά του με τις προδιαγραφές του Skroutz.

Mπορείτε να ανεβάσετε το XML σας και ο validator θα επιβεβαιώσει ότι είναι καλά ορισμένο, σύμφωνα με το πρωτόκολλο XML, θα προσπαθήσει να εντοπίσει το στοιχείο του XML που αντιστοιχεί σε κάθε ένα από τα προϊόντα σας και στη συνέχεια θα σαρώσει τα πεδία των προϊόντων για να εξακριβώσει ότι τηρούν τις προδιαγραφές του Skroutz.

Παράδείγματα XML

XML χωρίς size variations

Το παρακάτω είναι ένα τμήμα ενός ενδεικτικού XML χωρίς size variations όπως αναγνωρίζεται από το Skroutz

<?xml version="1.0" encoding="UTF-8"?>
<mywebstore>
   <created_at>2010-04-08 12:32</created_at>
   <products>
      <product>
        <id>322233</id>
        <name><![CDATA[Converse All Star Chuck Taylor Ox]]></name>
        <link><![CDATA[https://www.mywebstore.gr/product/322233]]></link>
        <image><![CDATA[https://www.mywebstore.gr/product/322233.jpg]]></image>
        <additionalimage><![CDATA[https://www.mywebstore.gr/product/322233/front.jpg]]></additionalimage>
        <category><![CDATA[Αθλητικά > Sneakers]]></category>
        <price_with_vat>30.00</price_with_vat>
        <vat>24.00</vat>
        <manufacturer><![CDATA[Converse]]></manufacturer>
        <mpn>M7652C</mpn>
        <ean>886952780692</ean>
        <availability>Παράδοση 1 έως 3 ημέρες</availability>
        <size>38,39</size>
        <weight>2000</weight>
        <color>Άσπρο</color>
        <description>
          Το Chuck Taylor All Star είναι ένα από τα πιο εμβληματικά
          sneakers όλων των εποχών. Πρόκειται για ένα διαχρονικό σχέδιο με
          κλασσική και άνετη εφαρμογή σε λευκό χρώμα με εξωτερική ανθεκτική
          αντιολισθητική σόλα από καουτσούκ. Αποτελεί ιδανικό κομμάτι για
          casual και μη εμφανίσεις.
        </description>
        <quantity>10</quantity>
      </product>
      ...
      ...
      ...
   </products>
</mywebstore>

XML με size variations

Το παρακάτω είναι ένα τμήμα ενός ενδεικτικού XML με size variations όπως αναγνωρίζεται από το Skroutz

<?xml version="1.0" encoding="UTF-8"?>
<mywebstore>
   <created_at>2010-04-08 12:32</created_at>
   <products>
      <product>
        <id>322233</id>
        <name><![CDATA[Converse All Star Chuck Taylor Ox]]></name>
        <link><![CDATA[https://www.mywebstore.gr/product/322233]]></link>
        <image><![CDATA[https://www.mywebstore.gr/product/322233.jpg]]></image>
        <additionalimage><![CDATA[https://www.mywebstore.gr/product/322233/front.jpg]]></additionalimage>
        <category><![CDATA[Αθλητικά > Sneakers]]></category>
        <price_with_vat>30.00</price_with_vat>
        <vat>24.00</vat>
        <manufacturer><![CDATA[Converse]]></manufacturer>
        <mpn>M7652C</mpn>
        <ean>886952780692</ean>
        <availability>Παράδοση 1 έως 3 ημέρες</availability>
        <size>43,45</size>
        <weight>2000</weight>
        <color>Άσπρο</color>
        <description>
          Το Chuck Taylor All Star είναι ένα από τα πιο εμβληματικά
          sneakers όλων των εποχών. Πρόκειται για ένα διαχρονικό σχέδιο με
          κλασσική και άνετη εφαρμογή σε λευκό χρώμα με εξωτερική ανθεκτική
          αντιολισθητική σόλα από καουτσούκ. Αποτελεί ιδανικό κομμάτι για
          casual και μη εμφανίσεις.
        </description>
        <quantity>10</quantity>
        <variations>
          <variation>
            <variationid>322233.43</variationid>
            <link><![CDATA[https://www.mywebstore.gr/product/322233]]></link>
            <availability>Παράδοση 1 έως 3 ημέρες</availability>
            <manufacturersku>M7652C</manufacturersku>
            <ean>886952780692</ean>
            <price_with_vat>33.00</price_with_vat>
            <size>43</size>
            <quantity>6</quantity>
          </variation>
          <variation>
            <variationid>322233.45</variationid>
            <link><![CDATA[https://www.mywebstore.gr/product/322233]]></link>
            <availability>Παράδοση 1 έως 3 ημέρες</availability>
            <manufacturersku>M7652C</manufacturersku>
            <ean>886952780692</ean>
            <price_with_vat>30.00</price_with_vat>
            <size>45</size>
            <quantity>4</quantity>
          </variation>
          ...
          ...
          ...
        </variations>
      </product>
      ...
      ...
      ...
   </products>
</mywebstore>

Ενδεικτικά XSD's

XSD χωρίς size variations

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- required elements -->
  <!-- created at -->
  <xs:element name="created_at" type="xs:dateTime" />

  <!-- unique id -->
  <xs:element name="uid">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="200" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- name -->
  <xs:element name="name">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="300" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- link -->
  <xs:element name="link">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="400" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- image -->
  <xs:element name="image">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="400" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- additional image -->
  <xs:element name="additional_image">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="400" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- price -->
  <xs:element name="price" type="xs:decimal" />

  <!-- vat -->
  <xs:element name="vat" type="xs:decimal" />

  <!-- category -->
  <xs:element name="category">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="300" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- manufacturer -->
  <xs:element name="manufacturer">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- manufacturer part number -->
  <xs:element name="mpn">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- ean -->
  <xs:element name="ean">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:totalDigits value="13" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- instock [deprecated] -->
  <xs:element name="instock">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="Y" />
        <xs:enumeration value="N" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- shipping -->
  <xs:element name="shipping" type="xs:decimal" />

  <!-- availability -->
  <xs:element name="availability">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- size -->
  <xs:element name="size">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- weight -->
  <xs:element name="weight" type="xs:decimal" />

  <!-- color -->
  <xs:element name="color">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="50" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- quantity -->
  <xs:element name="quantity" type="xs:integer" />

  <!-- basic structure -->
  <xs:element name="storedata">
    <xs:complexType>
      <xs:sequence>
        <!-- created at -->
        <xs:element ref="created_at" minOccurs="0" />

        <!-- products -->
        <xs:element name="products">
          <xs:complexType>
            <xs:sequence>
              <!-- product -->
              <xs:element name="product" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>

                    <!-- required fields -->
                    <xs:element ref="uid"/>
                    <xs:element ref="name"/>
                    <xs:element ref="link"/>
                    <xs:element ref="image"/>
                    <xs:element ref="price"/>
                    <xs:element ref="category"/>
                    <xs:element ref="manufacturer" />
                    <xs:element ref="mpn" />
                    <xs:element ref="availability" />
                    <xs:element ref="instock" />

                    <!-- optional fields -->
                    <xs:element ref="vat" minOccurs="0"/>

                    <!-- description -->
                    <xs:element name="description">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="value" type="xs:string" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>

                    <xs:element ref="additional_image"  minOccurs="0"/>
                    <xs:element ref="ean"  minOccurs="0"/>
                    <xs:element ref="size"  minOccurs="0"/>
                    <xs:element ref="weight" minOccurs="0"/>
                    <xs:element ref="shipping"  minOccurs="0"/>
                    <xs:element ref="color"  minOccurs="0"/>
                    <xs:element ref="quantity" minOccurs="0"/>

                  </xs:all>

                </xs:complexType>
              </xs:element>
              <!-- end product -->
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      <!-- end products -->
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSD με size variations

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- required elements -->
  <!-- created at -->
  <xs:element name="created_at" type="xs:dateTime" />

  <!-- unique id -->
  <xs:element name="uid">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="200" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- name -->
  <xs:element name="name">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="300" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- link -->
  <xs:element name="link">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="400" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- image -->
  <xs:element name="image">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="400" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- price -->
  <xs:element name="price" type="xs:decimal" />

  <!-- category -->
  <xs:element name="category">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="300" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- manufacturer -->
  <xs:element name="manufacturer">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- manufacturer part number -->
  <xs:element name="mpn">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- availability -->
  <xs:element name="availability">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- instock [deprecated] -->
  <xs:element name="instock">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="Y" />
        <xs:enumeration value="N" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- optional elements -->
  <!-- vat -->
  <xs:element name="vat" type="xs:decimal" />

  <!-- additional image -->
  <xs:element name="additional_image">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="400" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- ean -->
  <xs:element name="ean">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:totalDigits value="13" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- size -->
  <xs:element name="size">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- weight -->
  <xs:element name="weight" type="xs:decimal" />

  <!-- shipping -->
  <xs:element name="shipping" type="xs:decimal" />

  <!-- color -->
  <xs:element name="color">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="50" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <!-- quantity -->
  <xs:element name="quantity" type="xs:integer" />

  <!-- basic structure -->
  <xs:element name="storedata">
    <xs:complexType>
      <xs:sequence>
        <!-- created at -->
        <xs:element ref="created_at" minOccurs="0" />

        <!-- products -->
        <xs:element name="products">
          <xs:complexType>
            <xs:sequence>
              <!-- product -->
              <xs:element name="product" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>

                    <!-- required fields -->
                    <xs:element ref="uid"/>
                    <xs:element ref="name"/>
                    <xs:element ref="link"/>
                    <xs:element ref="image"/>
                    <xs:element ref="price"/>
                    <xs:element ref="category"/>
                    <xs:element ref="manufacturer" />
                    <xs:element ref="mpn" />
                    <xs:element ref="availability" />
                    <xs:element ref="instock" />

                    <!-- optional fields -->
                    <xs:element ref="vat" minOccurs="0"/>

                    <!-- description -->
                    <xs:element name="description">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="value" type="xs:string" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>

                    <xs:element ref="additional_image"  minOccurs="0"/>
                    <xs:element ref="ean"  minOccurs="0"/>
                    <xs:element ref="size"  minOccurs="0"/>
                    <xs:element ref="weight" minOccurs="0"/>
                    <xs:element ref="shipping"  minOccurs="0"/>
                    <xs:element ref="color"  minOccurs="0"/>
                    <xs:element ref="quantity" minOccurs="0"/>

                    <!-- size variations -->
                    <xs:element name="variations">
                      <xs:complexType>
                        <xs:sequence>

                          <!-- size variation -->
                          <xs:element name="variation" maxOccurs="unbounded" minOccurs="0">
                            <xs:complexType>
                              <xs:sequence>

                                <!-- required fields -->
                                <xs:element type="xs:string" name="variationid"/>
                                <xs:element type="xs:string" name="availability"/>
                                <xs:element type="xs:string" name="size"/>
                                <xs:element type="xs:integer" name="quantity"/>

                                <!-- optional fields -->
                                <xs:element type="xs:string" name="link"/>
                                <xs:element type="xs:string" name="manufacturersku"/>
                                <xs:element type="xs:integer" name="ean"/>
                                <xs:element type="xs:decimal" name="price_with_vat"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <!-- end size variation -->

                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <!-- end size variations -->

                  </xs:all>

                </xs:complexType>
              </xs:element>
              <!-- end product -->
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      <!-- end products -->
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>