mythodea Δημοσ. 17 Φεβρουαρίου 2010 Δημοσ. 17 Φεβρουαρίου 2010 Καλησπέρα, θα ήθελα να ρωτήσω πώς μπορώ να ορίσω μέσα σε κανόνες DTD ένα element το οποίο να μπορεί να παίρνει μόνο 2 συγκεκριμένες τιμές, ή τη μια ή την άλλη δηλαδή, αλλά όχι και τις 2 μαζί ταυτόχρονα....πχ: <!DOCTYPE actors [ <!ELEMENT actors (name?, gender)*> <!ELEMENT name (#PCDATA)> <!ELEMENT gender ("M"|"F")> ] Θέλω δηλαδή το element gender να παίρνει ή τιμή "M" ή τιμή "F", αλλά ο xml validator "χτυπάει" λάθος σ' εκείνη τη γραμμή. Τί πρέπει να κάνω; Και μια τελευταία ερώτηση: αν ορίσω το στοιχείο name σαν προαιρετικό με το ερωτηματικό (?) τότε θα πρέπει να βάλω ερωτηματικό και εδώ: <!ELEMENT name (#PCDATA)?> Ευχαριστώ για το χρόνο σας...τώρα αρχίζω να μαθαίνω τους κανόνες DTD και όπου έψαξα δυστυχώς δεν βρήκα απάντηση στα ερωτήματά μου
Blondeamon Δημοσ. 17 Φεβρουαρίου 2010 Δημοσ. 17 Φεβρουαρίου 2010 Μέσα στο DTD η μορφή πρέπει να είναι πάντα ως εξης <!ATTLIST element-name attribute-name attribute-type default-value> πχ <!ATTLIST actors genre (M|F)> Προσοχη ομως, αυτο στο attribute list, δηλ μετα την δήλωση των elements. Θα δηλώσεις κανονικά τα elements όπως τα έχεις και μετά που θα δηλώνεις τα attributes εκεί θα το διαχωρίσεις να παίρνει μονο αυτες τις τιμές. Εδώ όλα: http://www.w3schools.com/DTD/dtd_attributes.asp Υ.Γ Στην δεύτερη ερώτηση σου, οχι το ? το βάζεις μόνο όταν το δηλώνεις σαν παιδί άλλου κόμβου. Οταν εξηγεις τι είναι (πχ PCDATA) δε το χρειάζεσαι. σρυ το σωστο ειναι <!ATTLIST actors genre (M|F)> ειχα αφησει κατα λαθος μεσα κατι ακομα.
mythodea Δημοσ. 17 Φεβρουαρίου 2010 Μέλος Δημοσ. 17 Φεβρουαρίου 2010 Σ' ευχαριστώ πολύ για την απάντησή σου! Αν όμως εγώ θέλω αυτό το "genre" να είναι οπωσδήποτε ELEMENT και όχι Attribute, πώς θα το κάνω? Όλα τα elements δηλαδή παίρνουν μόνο #PCDATA σαν τύπο;
Blondeamon Δημοσ. 17 Φεβρουαρίου 2010 Δημοσ. 17 Φεβρουαρίου 2010 Το PCDATA σημαίνει ουσιαστικά text, κάτι πρέπει να περιέχουν και αυτά. Τώρα αν θέλεις το ίδιο το element να εχει μια απο 2 τιμες δεν ξερω αν γίνεται. <!ELEMENT note (#PCDATA|to|from|header|message)*> αυτη ειναι μια γενικη μορφη αλλα αν καταλαβα εσυ θελεις το pcdata να είναι είτε Μ ειτε F. Πρέπει να το ψάξεις και αλλο, εγω δε βρηκα κατι.
mythodea Δημοσ. 14 Μαρτίου 2010 Μέλος Δημοσ. 14 Μαρτίου 2010 Βρήκες τελικά λύση φίλε μου? Ναι τη βρήκα! Σ' ευχαριστώ κιόλας! Δυστυχώς ο μόνος διαθέσιμος τύπος δεδομένων γα τα elements είναι το #PCDATA. Δεν υπάρχουν δηλαδή άλλοι τύποι, πχ διακριτοί "a" or "b" όσο κι αν έψαξα στο ίντερνετ, ειδικά στο W3schools....
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.